Add support for new clocks.
authorUlrich Drepper <drepper@redhat.com>
Thu, 25 Mar 2010 11:01:33 +0000 (04:01 -0700)
committerUlrich Drepper <drepper@redhat.com>
Thu, 25 Mar 2010 11:01:33 +0000 (04:01 -0700)
Recent Linux kernels added support for the CLOCK_MONOTONIC_RAW,
CLOCK_REALTIME_COARSE, and CLOCK_MONOTONIC_COARSE clocks.

ChangeLog
bits/time.h
sysdeps/unix/sysv/linux/clock_getres.c
sysdeps/unix/sysv/linux/clock_gettime.c
sysdeps/unix/sysv/linux/clock_settime.c

index 08db020..6029367 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,16 @@
+2010-03-24  Ulrich Drepper  <drepper@redhat.com>
+
+       [BZ #11389]
+       * bits/time.h: Define CLOCK_MONOTONIC_RAW, CLOCK_REALTIME_COARSE, and
+       CLOCK_MONOTONIC_COARSE.
+       * sysdeps/unix/sysv/linux/clock_getres.c: Handle CLOCK_MONOTONIC_RAW,
+       CLOCK_REALTIME_COARSE, and CLOCK_MONOTONIC_COARSE.
+       * sysdeps/unix/sysv/linux/clock_gettime.c: Likewise.
+       * sysdeps/unix/sysv/linux/clock_settime.c: Likewise.
+
 2010-03-16  Chris Demetriou  <cgd@google.com>
 
+       [BZ #11394]
        * locale/programs/simple-hash.c: Include inttypes.h.
        (hashval_t): Defined to be uint32_t.
        * locale/programs/simple_hash.h: Include inttypes.h.
index b3184d1..968ecc5 100644 (file)
@@ -1,5 +1,5 @@
 /* System-dependent timing definitions.  Generic version.
-   Copyright (C) 1996,1997,1999-2002,2003 Free Software Foundation, Inc.
+   Copyright (C) 1996,1997,1999-2002,2003,2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -50,6 +50,12 @@ extern long int __sysconf (int);
 #   define CLOCK_PROCESS_CPUTIME_ID    2
 /* Thread-specific CPU-time clock.  */
 #   define CLOCK_THREAD_CPUTIME_ID     3
+/* Monotonic system-wide clock, not adjusted for frequency scaling.  */
+#   define CLOCK_MONOTONIC_RAW         4
+/* Identifier for system-wide realtime clock, updated only on ticks.  */
+#   define CLOCK_REALTIME_COARSE       5
+/* Monotonic system-wide clock, updated only on ticks.  */
+#   define CLOCK_MONOTONIC_COARSE      6
 
 /* Flag to indicate time is absolute.  */
 #   define TIMER_ABSTIME               1
index 581ff22..933580b 100644 (file)
@@ -1,5 +1,5 @@
 /* clock_getres -- Get the resolution of a POSIX clockid_t.  Linux version.
-   Copyright (C) 2003,2004,2005,2006, 2008 Free Software Foundation, Inc.
+   Copyright (C) 2003,2004,2005,2006,2008,2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -44,6 +44,9 @@
   SYSDEP_GETRES_CPUTIME                                                              \
   case CLOCK_REALTIME:                                                       \
   case CLOCK_MONOTONIC:                                                              \
+  case CLOCK_MONOTONIC_RAW:                                                  \
+  case CLOCK_REALTIME_COARSE:                                                \
+  case CLOCK_MONOTONIC_COARSE:                                               \
     SYSCALL_GETRES
 
 # define __libc_missing_posix_timers 0
@@ -80,6 +83,9 @@ maybe_syscall_getres (clockid_t clock_id, struct timespec *res)
   SYSDEP_GETRES_CPUTIME                                                              \
   case CLOCK_REALTIME:                                                       \
   case CLOCK_MONOTONIC:                                                              \
+  case CLOCK_MONOTONIC_RAW:                                                  \
+  case CLOCK_REALTIME_COARSE:                                                \
+  case CLOCK_MONOTONIC_COARSE:                                               \
     retval = maybe_syscall_getres (clock_id, res);                           \
     if (retval == 0)                                                         \
       break;                                                                 \
index cd536a0..dd3755c 100644 (file)
@@ -1,5 +1,5 @@
 /* clock_gettime -- Get current time from a POSIX clockid_t.  Linux version.
-   Copyright (C) 2003,2004,2005,2006,2007 Free Software Foundation, Inc.
+   Copyright (C) 2003,2004,2005,2006,2007,2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -80,6 +80,9 @@ maybe_syscall_gettime (clockid_t clock_id, struct timespec *tp)
   SYSDEP_GETTIME_CPUTIME                                                     \
   case CLOCK_REALTIME:                                                       \
   case CLOCK_MONOTONIC:                                                              \
+  case CLOCK_MONOTONIC_RAW:                                                  \
+  case CLOCK_REALTIME_COARSE:                                                \
+  case CLOCK_MONOTONIC_COARSE:                                               \
     retval = maybe_syscall_gettime (clock_id, tp);                           \
     if (retval == 0)                                                         \
       break;                                                                 \
index 217ae3f..8c52456 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003, 2004, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2003, 2004, 2006, 2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -45,7 +45,7 @@ maybe_syscall_settime_cpu (clockid_t clock_id, const struct timespec *tp)
       INTERNAL_SYSCALL_DECL (err);
       int r = INTERNAL_SYSCALL (clock_settime, err, 2, clock_id, tp);
       if (!INTERNAL_SYSCALL_ERROR_P (r, err))
-        return 0;
+       return 0;
 
       e = INTERNAL_SYSCALL_ERRNO (r, err);
 # ifndef __ASSUME_POSIX_TIMERS
@@ -90,6 +90,7 @@ extern int __libc_missing_posix_timers attribute_hidden;
 /* The REALTIME clock might be available.  Try the syscall first.  */
 # define SYSDEP_SETTIME \
   case CLOCK_REALTIME:                                                       \
+  case CLOCK_REALTIME_COARSE:                                                \
     {                                                                        \
       int e = EINVAL;                                                        \
                                                                              \