From 57ada0e7e79b9421a77d2b92dffce0f9e8e087b5 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Tue, 6 Jan 2015 04:59:13 -0800 Subject: Define CLOCKS_PER_SEC type to the type clock_t C99 specifies that CLOCKS_PER_SEC is an expression with the type clock_t. This patch adds a generic to define CLOCKS_PER_SEC and provides the Linux/x86-64 version of to support x32. [BZ #17797] * bits/time.h (CLOCKS_PER_SEC): Changed to ((clock_t) 1000000). * sysdeps/unix/sysv/linux/bits/time.h (CLOCKS_PER_SEC): Likewise. * sysdeps/unix/sysv/linux/clock.c (clock): _Static_assert CLOCKS_PER_SEC == 1000000. * time/clocktest.c (main): Replace %ld with %jd and cast to intmax_t. --- sysdeps/unix/sysv/linux/bits/time.h | 8 ++++---- sysdeps/unix/sysv/linux/clock.c | 7 +++---- 2 files changed, 7 insertions(+), 8 deletions(-) (limited to 'sysdeps') diff --git a/sysdeps/unix/sysv/linux/bits/time.h b/sysdeps/unix/sysv/linux/bits/time.h index 226d6dd..706946c 100644 --- a/sysdeps/unix/sysv/linux/bits/time.h +++ b/sysdeps/unix/sysv/linux/bits/time.h @@ -39,13 +39,13 @@ struct timeval # ifndef _BITS_TIME_H # define _BITS_TIME_H 1 -/* ISO/IEC 9899:1990 7.12.1: - The macro `CLOCKS_PER_SEC' is the number per second of the value - returned by the `clock' function. */ +/* ISO/IEC 9899:1999 7.23.1: Components of time + The macro `CLOCKS_PER_SEC' is an expression with type `clock_t' that is + the number per second of the value returned by the `clock' function. */ /* CAE XSH, Issue 4, Version 2: The value of CLOCKS_PER_SEC is required to be 1 million on all XSI-conformant systems. */ -# define CLOCKS_PER_SEC 1000000l +# define CLOCKS_PER_SEC ((clock_t) 1000000) # if (!defined __STRICT_ANSI__ || defined __USE_POSIX) \ && !defined __USE_XOPEN2K diff --git a/sysdeps/unix/sysv/linux/clock.c b/sysdeps/unix/sysv/linux/clock.c index e06c4b3..e568bf3 100644 --- a/sysdeps/unix/sysv/linux/clock.c +++ b/sysdeps/unix/sysv/linux/clock.c @@ -20,15 +20,14 @@ #include #include -#if CLOCKS_PER_SEC != 1000000l -# error "CLOCKS_PER_SEC should be 1000000" -#endif - clock_t clock (void) { struct timespec ts; + _Static_assert (CLOCKS_PER_SEC == 1000000, + "CLOCKS_PER_SEC should be 1000000"); + /* clock_gettime shouldn't fail here since CLOCK_PROCESS_CPUTIME_ID is supported since 2.6.12. Check the return value anyway in case the kernel barfs on us for some reason. */ -- cgit v1.1