From ef3088c8da5288533cd9197e928b33bdc8833718 Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Mon, 5 Jan 2015 11:47:31 -0800
Subject: [PATCH] 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: Include <assert.h>.
(clock): Assert CLOCKS_PER_SEC == 1000000l.
* time/clocktest.c (main): Replace %ld with %jd and cast to
intmax_t.
---
ChangeLog | 10 ++++++++++
NEWS | 2 +-
bits/time.h | 8 ++++----
sysdeps/unix/sysv/linux/bits/time.h | 8 ++++----
sysdeps/unix/sysv/linux/clock.c | 7 +++----
time/clocktest.c | 4 ++--
6 files changed, 24 insertions(+), 15 deletions(-)
@@ -1,3 +1,13 @@
+2015-01-05 H.J. Lu <hongjiu.lu@intel.com>
+
+ [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: Include <assert.h>.
+ (clock): Assert CLOCKS_PER_SEC == 1000000l.
+ * time/clocktest.c (main): Replace %ld with %jd and cast to
+ intmax_t.
+
2015-01-05 Roland McGrath <roland@hack.frob.com>
* sysdeps/generic/unwind-resume.h: New file.
@@ -16,7 +16,7 @@ Version 2.21
17583, 17584, 17585, 17589, 17594, 17601, 17608, 17616, 17625, 17630,
17633, 17634, 17635, 17647, 17653, 17657, 17664, 17665, 17668, 17682,
17717, 17719, 17722, 17723, 17724, 17725, 17732, 17733, 17744, 17745,
- 17746, 17747, 17775, 17777, 17780, 17781, 17782, 17793, 17796
+ 17746, 17747, 17775, 17777, 17780, 17781, 17782, 17793, 17796, 17797
* i386 memcpy functions optimized with SSE2 unaligned load/store.
@@ -24,13 +24,13 @@
# 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_XOPEN2K
/* Even though CLOCKS_PER_SEC has such a strange value CLK_TCK
@@ -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
@@ -19,16 +19,15 @@
#include <sys/times.h>
#include <time.h>
#include <unistd.h>
-
-#if CLOCKS_PER_SEC != 1000000l
-# error "CLOCKS_PER_SEC should be 1000000"
-#endif
+#include <assert.h>
clock_t
clock (void)
{
struct timespec ts;
+ assert (CLOCKS_PER_SEC == 1000000l);
+
/* 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. */
@@ -30,7 +30,7 @@ main (int argc, char ** argv)
printf ("%jd clock ticks per second (start=%jd,stop=%jd)\n",
(intmax_t) (stop - start), (intmax_t) start, (intmax_t) stop);
- printf ("CLOCKS_PER_SEC=%ld, sysconf(_SC_CLK_TCK)=%ld\n",
- CLOCKS_PER_SEC, sysconf(_SC_CLK_TCK));
+ printf ("CLOCKS_PER_SEC=%jd, sysconf(_SC_CLK_TCK)=%ld\n",
+ (intmax_t) CLOCKS_PER_SEC, sysconf(_SC_CLK_TCK));
return 0;
}
--
1.9.3