From 26889eacc24cd9f0cb37c5a67beac1a0ba709adf Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Sat, 1 Sep 2012 21:32:04 +0000 Subject: Remove __ASSUME_POSIX_CPU_TIMERS. --- sysdeps/unix/sysv/linux/clock_getcpuclockid.c | 56 +++------------- sysdeps/unix/sysv/linux/clock_getres.c | 86 ++---------------------- sysdeps/unix/sysv/linux/clock_gettime.c | 94 ++------------------------- sysdeps/unix/sysv/linux/clock_settime.c | 54 +-------------- sysdeps/unix/sysv/linux/kernel-features.h | 3 - 5 files changed, 21 insertions(+), 272 deletions(-) (limited to 'sysdeps/unix/sysv') diff --git a/sysdeps/unix/sysv/linux/clock_getcpuclockid.c b/sysdeps/unix/sysv/linux/clock_getcpuclockid.c index 1cfdf3489b..8700354a92 100644 --- a/sysdeps/unix/sysv/linux/clock_getcpuclockid.c +++ b/sysdeps/unix/sysv/linux/clock_getcpuclockid.c @@ -29,60 +29,24 @@ int clock_getcpuclockid (pid_t pid, clockid_t *clock_id) { -#ifdef __NR_clock_getres /* The clockid_t value is a simple computation from the PID. But we do a clock_getres call to validate it. */ const clockid_t pidclock = MAKE_PROCESS_CPUCLOCK (pid, CPUCLOCK_SCHED); -# if !(__ASSUME_POSIX_CPU_TIMERS > 0) - extern int __libc_missing_posix_cpu_timers attribute_hidden; - if (!__libc_missing_posix_cpu_timers) -# endif + INTERNAL_SYSCALL_DECL (err); + int r = INTERNAL_SYSCALL (clock_getres, err, 2, pidclock, NULL); + if (!INTERNAL_SYSCALL_ERROR_P (r, err)) { - INTERNAL_SYSCALL_DECL (err); - int r = INTERNAL_SYSCALL (clock_getres, err, 2, pidclock, NULL); - if (!INTERNAL_SYSCALL_ERROR_P (r, err)) - { - *clock_id = pidclock; - return 0; - } - - if (INTERNAL_SYSCALL_ERRNO (r, err) == EINVAL) - { -# if !(__ASSUME_POSIX_CPU_TIMERS > 0) - if (pidclock == MAKE_PROCESS_CPUCLOCK (0, CPUCLOCK_SCHED) - || INTERNAL_SYSCALL_ERROR_P (INTERNAL_SYSCALL - (clock_getres, err, 2, - MAKE_PROCESS_CPUCLOCK - (0, CPUCLOCK_SCHED), NULL), - err)) - /* The kernel doesn't support these clocks at all. */ - __libc_missing_posix_cpu_timers = 1; - else -# endif - /* The clock_getres system call checked the PID for us. */ - return ESRCH; - } - else - return INTERNAL_SYSCALL_ERRNO (r, err); + *clock_id = pidclock; + return 0; } -#endif - - /* We don't allow any process ID but our own. */ - if (pid != 0 && pid != getpid ()) - return EPERM; -#ifdef CLOCK_PROCESS_CPUTIME_ID - if (HAS_CPUCLOCK) + if (INTERNAL_SYSCALL_ERRNO (r, err) == EINVAL) { - /* Store the number. */ - *clock_id = CLOCK_PROCESS_CPUTIME_ID; - - return 0; + /* The clock_getres system call checked the PID for us. */ + return ESRCH; } -#endif - - /* We don't have a timer for that. */ - return ENOENT; + else + return INTERNAL_SYSCALL_ERRNO (r, err); } 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 diff --git a/sysdeps/unix/sysv/linux/clock_gettime.c b/sysdeps/unix/sysv/linux/clock_gettime.c index e333d8d9e8..05dfb9d099 100644 --- a/sysdeps/unix/sysv/linux/clock_gettime.c +++ b/sysdeps/unix/sysv/linux/clock_gettime.c @@ -49,99 +49,13 @@ retval = SYSCALL_GETTIME (clock_id, tp); \ break -#ifdef __NR_clock_gettime /* 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_GETTIME_CPU(clock_id, tp) \ +#define SYSDEP_GETTIME_CPU(clock_id, tp) \ retval = SYSCALL_GETTIME (clock_id, tp); \ break -# define SYSDEP_GETTIME_CPUTIME /* Default catches them too. */ - -# else - -int __libc_missing_posix_cpu_timers attribute_hidden; - -static int -maybe_syscall_gettime_cpu (clockid_t clock_id, struct timespec *tp) -{ - int e = EINVAL; - - if (!__libc_missing_posix_cpu_timers) - { - INTERNAL_SYSCALL_DECL (err); - int r = INTERNAL_GETTIME (clock_id, tp); - if (!INTERNAL_SYSCALL_ERROR_P (r, err)) - return 0; - - e = INTERNAL_SYSCALL_ERRNO (r, err); - if (e == EINVAL) - { -# ifdef HAVE_CLOCK_GETRES_VSYSCALL - /* 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); -# else - /* Check whether the kernel supports CPU clocks at all. - If not, record it for the future. */ - r = INTERNAL_SYSCALL (clock_getres, err, 2, - MAKE_PROCESS_CPUCLOCK (0, CPUCLOCK_SCHED), - NULL); -# endif - if (INTERNAL_SYSCALL_ERROR_P (r, err)) - __libc_missing_posix_cpu_timers = 1; - } - } - - return e; -} - -# define SYSDEP_GETTIME_CPU(clock_id, tp) \ - retval = maybe_syscall_gettime_cpu (clock_id, tp); \ - 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_gettime_cputime (clockid_t clock_id, struct timespec *tp) -{ - return maybe_syscall_gettime_cpu - (clock_id == CLOCK_THREAD_CPUTIME_ID - ? MAKE_THREAD_CPUCLOCK (0, CPUCLOCK_SCHED) - : MAKE_PROCESS_CPUCLOCK (0, CPUCLOCK_SCHED), - tp); -} - -# define SYSDEP_GETTIME_CPUTIME \ - case CLOCK_PROCESS_CPUTIME_ID: \ - case CLOCK_THREAD_CPUTIME_ID: \ - retval = maybe_syscall_gettime_cputime (clock_id, tp); \ - if (retval == 0) \ - break; \ - if (retval != EINVAL || !__libc_missing_posix_cpu_timers) \ - { \ - __set_errno (retval); \ - retval = -1; \ - break; \ - } \ - retval = hp_timing_gettime (clock_id, tp); \ - break -# if !HP_TIMING_AVAIL -# define hp_timing_gettime(clock_id, tp) (__set_errno (EINVAL), -1) -# endif - -# endif -#endif +#define SYSDEP_GETTIME_CPUTIME /* Default catches them too. */ #include diff --git a/sysdeps/unix/sysv/linux/clock_settime.c b/sysdeps/unix/sysv/linux/clock_settime.c index f75ceca249..fde662177b 100644 --- a/sysdeps/unix/sysv/linux/clock_settime.c +++ b/sysdeps/unix/sysv/linux/clock_settime.c @@ -31,38 +31,6 @@ # include #endif -#if __ASSUME_POSIX_CPU_TIMERS <= 0 && defined __NR_clock_settime -extern int __libc_missing_posix_cpu_timers attribute_hidden; - -static int -maybe_syscall_settime_cpu (clockid_t clock_id, const struct timespec *tp) -{ - int e = EINVAL; - - if (!__libc_missing_posix_cpu_timers) - { - INTERNAL_SYSCALL_DECL (err); - int r = INTERNAL_SYSCALL (clock_settime, err, 2, clock_id, tp); - 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; -} -#endif - /* The REALTIME clock is definitely supported in the kernel. */ #define SYSDEP_SETTIME \ @@ -70,27 +38,11 @@ maybe_syscall_settime_cpu (clockid_t clock_id, const struct timespec *tp) retval = INLINE_SYSCALL (clock_settime, 2, clock_id, tp); \ break -#ifdef __NR_clock_settime /* We handled the REALTIME clock here. */ -# define HANDLED_REALTIME 1 -#endif +#define HANDLED_REALTIME 1 -#if __ASSUME_POSIX_CPU_TIMERS > 0 -# define HANDLED_CPUTIME 1 -# define SYSDEP_SETTIME_CPU \ +#define HANDLED_CPUTIME 1 +#define SYSDEP_SETTIME_CPU \ retval = INLINE_SYSCALL (clock_settime, 2, clock_id, tp) -#elif defined __NR_clock_settime -# define SYSDEP_SETTIME_CPU \ - retval = maybe_syscall_settime_cpu (clock_id, tp); \ - if (retval == 0) \ - break; \ - if (retval != EINVAL || !__libc_missing_posix_cpu_timers) \ - { \ - __set_errno (retval); \ - retval = -1; \ - break; \ - } \ - do { } while (0) -#endif #include diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h index 33fca5c4f6..61bf32d1b2 100644 --- a/sysdeps/unix/sysv/linux/kernel-features.h +++ b/sysdeps/unix/sysv/linux/kernel-features.h @@ -57,9 +57,6 @@ MIPS n32). */ #define __ASSUME_GETDENTS64_SYSCALL 1 -/* Beginning with 2.6.12 the clock and timer supports CPU clocks. */ -#define __ASSUME_POSIX_CPU_TIMERS 1 - /* The statfs64 syscalls are available in 2.5.74 (but not for alpha). */ #define __ASSUME_STATFS64 1 -- cgit 1.4.1