* sysdeps/unix/sysv/linux/clock_gettime.c (maybe_syscall_gettime_cpu):
authorUlrich Drepper <drepper@redhat.com>
Mon, 13 Aug 2007 00:46:30 +0000 (00:46 +0000)
committerUlrich Drepper <drepper@redhat.com>
Mon, 13 Aug 2007 00:46:30 +0000 (00:46 +0000)
Build fix for systems which might lack POSIX timer support.

ChangeLog
sysdeps/unix/sysv/linux/clock_gettime.c

index 55201ca127631275580e5bda7eecb0996b0c8457..cb5f6c67eeb894027acc54b3825fb9f68955cdd6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2007-08-12  Ulrich Drepper  <drepper@redhat.com>
 
+       * sysdeps/unix/sysv/linux/clock_gettime.c (maybe_syscall_gettime_cpu):
+       Build fix for systems which might lack POSIX timer support.
+
        * sysdeps/unix/sysv/linux/x86_64/libc-start.c
        (_libc_vdso_platform_setup): Mangle function pointers before storing
        them.
index 5afe20feb5f3d4448df4a2d85cf8668abd76b253..cd536a0fc0e0adb9074f6428716369c8b7fd7153 100644 (file)
@@ -1,5 +1,5 @@
 /* clock_gettime -- Get current time from a POSIX clockid_t.  Linux version.
-   Copyright (C) 2003,2004,2005,2006 Free Software Foundation, Inc.
+   Copyright (C) 2003,2004,2005,2006,2007 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
@@ -133,11 +133,19 @@ maybe_syscall_gettime_cpu (clockid_t clock_id, struct timespec *tp)
        {
          if (e == EINVAL)
            {
+# ifdef HAVE_CLOCK_GETRES_VSYSCALL
              /* Check whether the kernel supports CPU clocks at all.
                 If not, record it for the future.  */
              r = INTERNAL_VSYSCALL (clock_getres, err, 2,
+                                    MAKE_PROCESS_CPUCLOCK (0, CPUCLOCK_SCHED),
+                                    NULL);
+# else
+             /* Check whether the kernel supports CPU clocks at all.
+                If not, record it for the future.  */
+             r = INTERNAL_SYSCALL (clock_getres, err, 2,
                                    MAKE_PROCESS_CPUCLOCK (0, CPUCLOCK_SCHED),
                                    NULL);
+# endif
              if (INTERNAL_SYSCALL_ERROR_P (r, err))
                __libc_missing_posix_cpu_timers = 1;
            }