1 /* getitimer -- Get the state of an interval timer.  Linux/32 version.
2    Copyright (C) 2020-2022 Free Software Foundation, Inc.
3    This file is part of the GNU C Library.
4 
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
9 
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
14 
15    You should have received a copy of the GNU Lesser General Public
16    License along with the GNU C Library; if not, see
17    <http://www.gnu.org/licenses/>.  */
18 
19 #include <time.h>
20 #include <sys/time.h>
21 #include <sys/types.h>
22 #include <sysdep.h>
23 #include <tv32-compat.h>
24 
25 int
__getitimer64(__itimer_which_t which,struct __itimerval64 * curr_value)26 __getitimer64 (__itimer_which_t which, struct __itimerval64 *curr_value)
27 {
28 #if __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64
29   return INLINE_SYSCALL_CALL (getitimer, which, curr_value);
30 #else
31   struct __itimerval32 curr_value_32;
32 
33   if (INLINE_SYSCALL_CALL (getitimer, which, &curr_value_32) == -1)
34     return -1;
35 
36   curr_value->it_interval
37     = valid_timeval32_to_timeval64 (curr_value_32.it_interval);
38   curr_value->it_value
39     = valid_timeval32_to_timeval64 (curr_value_32.it_value);
40   return 0;
41 #endif
42 }
43 
44 #if __TIMESIZE != 64
libc_hidden_def(__getitimer64)45 libc_hidden_def (__getitimer64)
46 int
47 __getitimer (__itimer_which_t which, struct itimerval *curr_value)
48 {
49   struct __itimerval64 val64;
50   if (__getitimer64 (which, &val64) != 0)
51     return -1;
52 
53   curr_value->it_interval
54     = valid_timeval64_to_timeval (val64.it_interval);
55   curr_value->it_value
56     = valid_timeval64_to_timeval (val64.it_value);
57 
58   return 0;
59 }
60 #endif
61 weak_alias (__getitimer, getitimer)
62