1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00

Remove __ASSUME_POSIX_CPU_TIMERS.

This commit is contained in:
Joseph Myers
2012-09-01 21:32:04 +00:00
parent 033d54a2d4
commit 26889eacc2
8 changed files with 55 additions and 324 deletions

View File

@ -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>