mirror of
https://sourceware.org/git/glibc.git
synced 2025-08-01 10:06:57 +03:00
Update.
* sysdeps/unix/i386/i586/clock_getres.c: Removed. * sysdeps/unix/i386/i586/clock_gettime.c: Removed. * sysdeps/unix/i386/i586/clock_nanosleep.c: Removed. * sysdeps/unix/i386/i586/clock_settime.c: Removed. * sysdeps/unix/i386/i586/cpuclock-init.h: Removed. * sysdeps/generic/cpuclock-init.h: Removed. * sysdeps/unix/i386/i686/Implies: Removed. * sysdeps/unix/i386/i686/tempname.c: Removed. * sysdeps/i386/i686/Versions: New file. * sysdeps/unix/i386/i586/Versions: Removed. * sysdeps/posix/clock_getres.c: If HP_TIMING_AVAIL is nonzero handle CLOCK_PROCESS_CPUTIME_ID and CLOCK_THREAD_CPUTIME_ID. * sysdeps/unix/clock_gettime.c: Likewise. * sysdeps/unix/clock_nanosleep.c: Likewise. * sysdeps/unix/clock_settime.c: Likewise. * sysdeps/posix/tempname.c: Is HP_TIMING_AVAIL is nonzero define RANDOM_BITS use CPU clock. * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/bits/time.h: New file. * sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9b/bits/time.h: New file. * sysdeps/unix/sysv/linux/sparc/sparc64/bits/time.h: New file. * sysdeps/sparc/Versions: New file. * elf/dl-support.c: Don't use cpuclock-init.h definitions, use hp-timing.h definitions. * sysdeps/generic/dl-sysdep.c: Likewise. * include/libc-internal.h: Include hp-timing.h. Use hp_timing_t in __get_clockfreq prototype. * sysdeps/unix/sysv/linux/i386/get_clockfreq.c (__get_clockfreq): Use hp_timing_t type. * sysdeps/unix/sysv/linux/ia64/get_clockfreq.c: New file.
This commit is contained in:
@ -17,14 +17,19 @@
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
#include <errno.h>
|
||||
#include <stdint.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/param.h>
|
||||
#include <libc-internal.h>
|
||||
|
||||
|
||||
#ifndef EXTRA_CLOCK_CASES
|
||||
# define EXTRA_CLOCK_CASES
|
||||
#if HP_TIMING_AVAIL
|
||||
/* Clock frequency of the processor. */
|
||||
static long int nsec;
|
||||
#endif
|
||||
|
||||
|
||||
/* Get resolution of clock. */
|
||||
int
|
||||
clock_getres (clockid_t clock_id, struct timespec *res)
|
||||
@ -50,7 +55,35 @@ clock_getres (clockid_t clock_id, struct timespec *res)
|
||||
}
|
||||
break;
|
||||
|
||||
EXTRA_CLOCK_CASES
|
||||
#if HP_TIMING_AVAIL
|
||||
case CLOCK_PROCESS_CPUTIME_ID:
|
||||
case CLOCK_THREAD_CPUTIME_ID:
|
||||
{
|
||||
if (__builtin_expect (nsec == 0, 0))
|
||||
{
|
||||
hp_timing_t freq;
|
||||
|
||||
/* This can only happen if we haven't initialized the `freq'
|
||||
variable yet. Do this now. We don't have to protect this
|
||||
code against multiple execution since all of them should
|
||||
lead to the same result. */
|
||||
freq = __get_clockfreq ();
|
||||
if (__builtin_expect (freq == 0, 0))
|
||||
/* Something went wrong. */
|
||||
break;
|
||||
|
||||
nsec = MAX (UINT64_C (1000000000) / freq, 1);
|
||||
}
|
||||
|
||||
/* File in the values. The seconds are always zero (unless we
|
||||
have a 1Hz machine). */
|
||||
res->tv_sec = 0;
|
||||
res->tv_nsec = nsec;
|
||||
|
||||
retval = 0;
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
|
||||
default:
|
||||
__set_errno (EINVAL);
|
||||
|
Reference in New Issue
Block a user