summary refs log tree commit diff
path: root/sysdeps/unix/sysv
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2015-01-06 04:59:13 -0800
committerH.J. Lu <hjl.tools@gmail.com>2015-01-06 04:59:13 -0800
commit57ada0e7e79b9421a77d2b92dffce0f9e8e087b5 (patch)
tree194bb1f4abee3c29299c52ae825f6be8f356c43f /sysdeps/unix/sysv
parent46abb64d6287d09100b147d062f6810066389b7e (diff)
downloadglibc-57ada0e7e79b9421a77d2b92dffce0f9e8e087b5.tar.gz
glibc-57ada0e7e79b9421a77d2b92dffce0f9e8e087b5.tar.xz
glibc-57ada0e7e79b9421a77d2b92dffce0f9e8e087b5.zip
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 <bits/time2.h> to define CLOCKS_PER_SEC and
provides the Linux/x86-64 version of <bits/time2.h> 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.
Diffstat (limited to 'sysdeps/unix/sysv')
-rw-r--r--sysdeps/unix/sysv/linux/bits/time.h8
-rw-r--r--sysdeps/unix/sysv/linux/clock.c7
2 files changed, 7 insertions, 8 deletions
diff --git a/sysdeps/unix/sysv/linux/bits/time.h b/sysdeps/unix/sysv/linux/bits/time.h
index 226d6dd64f..706946ce22 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: <time.h>
-   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: <time.h>
    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 e06c4b328f..e568bf3543 100644
--- a/sysdeps/unix/sysv/linux/clock.c
+++ b/sysdeps/unix/sysv/linux/clock.c
@@ -20,15 +20,14 @@
 #include <time.h>
 #include <unistd.h>
 
-#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.  */