diff options
Diffstat (limited to 'sysdeps/unix/sysv/linux/clock_getres.c')
-rw-r--r-- | sysdeps/unix/sysv/linux/clock_getres.c | 86 |
1 files changed, 4 insertions, 82 deletions
diff --git a/sysdeps/unix/sysv/linux/clock_getres.c b/sysdeps/unix/sysv/linux/clock_getres.c index 2bada33b40..1e87dd9a8d 100644 --- a/sysdeps/unix/sysv/linux/clock_getres.c +++ b/sysdeps/unix/sysv/linux/clock_getres.c @@ -46,89 +46,11 @@ case CLOCK_MONOTONIC_COARSE: \ SYSCALL_GETRES -#ifdef __NR_clock_getres /* We handled the REALTIME clock here. */ -# define HANDLED_REALTIME 1 -# define HANDLED_CPUTIME 1 +#define HANDLED_REALTIME 1 +#define HANDLED_CPUTIME 1 -# if __ASSUME_POSIX_CPU_TIMERS > 0 - -# define SYSDEP_GETRES_CPU SYSCALL_GETRES -# define SYSDEP_GETRES_CPUTIME /* Default catches them too. */ - -# else - -extern int __libc_missing_posix_cpu_timers attribute_hidden; - -static int -maybe_syscall_getres_cpu (clockid_t clock_id, struct timespec *res) -{ - int e = EINVAL; - - if (!__libc_missing_posix_cpu_timers) - { - INTERNAL_SYSCALL_DECL (err); - int r = INTERNAL_VSYSCALL (clock_getres, err, 2, clock_id, res); - if (!INTERNAL_SYSCALL_ERROR_P (r, err)) - return 0; - - e = INTERNAL_SYSCALL_ERRNO (r, err); - if (e == EINVAL) - { - /* Check whether the kernel supports CPU clocks at all. - If not, record it for the future. */ - r = INTERNAL_VSYSCALL (clock_getres, err, 2, - MAKE_PROCESS_CPUCLOCK (0, CPUCLOCK_SCHED), - NULL); - if (INTERNAL_SYSCALL_ERROR_P (r, err)) - __libc_missing_posix_cpu_timers = 1; - } - } - - return e; -} - -# define SYSDEP_GETRES_CPU \ - retval = maybe_syscall_getres_cpu (clock_id, res); \ - if (retval == 0) \ - break; \ - if (retval != EINVAL || !__libc_missing_posix_cpu_timers) \ - { \ - __set_errno (retval); \ - retval = -1; \ - break; \ - } \ - retval = -1 /* Otherwise continue on to the HP_TIMING version. */; - -static inline int -maybe_syscall_getres_cputime (clockid_t clock_id, struct timespec *res) -{ - return maybe_syscall_getres_cpu - (clock_id == CLOCK_THREAD_CPUTIME_ID - ? MAKE_THREAD_CPUCLOCK (0, CPUCLOCK_SCHED) - : MAKE_PROCESS_CPUCLOCK (0, CPUCLOCK_SCHED), - res); -} - -# define SYSDEP_GETRES_CPUTIME \ - case CLOCK_PROCESS_CPUTIME_ID: \ - case CLOCK_THREAD_CPUTIME_ID: \ - retval = maybe_syscall_getres_cputime (clock_id, res); \ - if (retval == 0) \ - break; \ - if (retval != EINVAL || !__libc_missing_posix_cpu_timers) \ - { \ - __set_errno (retval); \ - retval = -1; \ - break; \ - } \ - retval = hp_timing_getres (res); \ - break; -# if !HP_TIMING_AVAIL -# define hp_timing_getres(res) (__set_errno (EINVAL), -1) -# endif - -# endif -#endif +#define SYSDEP_GETRES_CPU SYSCALL_GETRES +#define SYSDEP_GETRES_CPUTIME /* Default catches them too. */ #include <sysdeps/posix/clock_getres.c> |