]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Define CLOCKS_PER_SEC type to the type clock_t
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 6 Jan 2015 12:59:13 +0000 (04:59 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 6 Jan 2015 12:59:13 +0000 (04:59 -0800)
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.

ChangeLog
NEWS
bits/time.h
sysdeps/unix/sysv/linux/bits/time.h
sysdeps/unix/sysv/linux/clock.c
time/clocktest.c

index 262e30015489d3a82e439ecb3ca5ae28a2d14b0f..be5eb186f59335e117f178bb7e87f905aa82b1c2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2015-01-06  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 (clock): _Static_assert
+       CLOCKS_PER_SEC == 1000000.
+       * 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.
diff --git a/NEWS b/NEWS
index 63918df4b3f278892f30081af50a194139517116..49c0a2d99e54ac74aece6ace9072a0a5ab064d32 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -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.
 
index ae17b7f8027f1d10d3275158fcba59319c6dfa05..7585ddf6e59dad742c0253e47770749bbe0dbdc5 100644 (file)
 # 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
index 226d6dd64fdd374f0f12feee239b0dc69a1bc590..706946ce227f3e147d0a55e89b971149bc027f9e 100644 (file)
@@ -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
index e06c4b328f0624829cc575b09c51f1207a28e849..e568bf354316a5299ad7a3292befc38dede10fbf 100644 (file)
 #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.  */
index 2e6457d56a6b74e7eb180353515a6c6fa15a5d17..13b7420e2e27d23aeeba193ab5b1236e8771f6f8 100644 (file)
@@ -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;
 }