Avoid gettimeofday vsyscall
authorUlrich Drepper <drepper@gmail.com>
Wed, 7 Sep 2011 00:22:37 +0000 (20:22 -0400)
committerUlrich Drepper <drepper@gmail.com>
Wed, 7 Sep 2011 00:22:37 +0000 (20:22 -0400)
ChangeLog
sysdeps/unix/sysv/linux/getsysstats.c

index fd78d99..32e74d7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2011-09-06  Ulrich Drepper  <drepper@gmail.com>
+
+       * sysdeps/unix/sysv/linux/getsysstats.c (__get_nprocs): Don't use
+       gettimeofday vsyscall, just use time.
+
 2011-09-06  Andreas Schwab  <schwab@redhat.com>
 
        * sysdeps/unix/sysv/linux/x86_64/gettimeofday.c [!SHARED]: Include
index b9bae3d..7feb7a1 100644 (file)
 #include <not-cancel.h>
 #include <kernel-features.h>
 
-#ifndef HAVE_CLOCK_GETTIME_VSYSCALL
-# undef INTERNAL_VSYSCALL
-# define INTERNAL_VSYSCALL INTERNAL_SYSCALL
-# undef INLINE_VSYSCALL
-# define INLINE_VSYSCALL INLINE_SYSCALL
-#else
-# include <bits/libc-vdso.h>
-#endif
-
 
 /* How we can determine the number of available processors depends on
    the configuration.  There is currently (as of version 2.0.21) no
@@ -141,17 +132,10 @@ __get_nprocs ()
   static int cached_result;
   static time_t timestamp;
 
-#ifdef __ASSUME_POSIX_TIMERS
-  struct timespec ts;
-  INTERNAL_SYSCALL_DECL (err);
-  INTERNAL_VSYSCALL (clock_gettime, err, 2, CLOCK_REALTIME, &ts);
-#else
-  struct timeval ts;
-  __gettimeofday (&ts, NULL);
-#endif
+  time_t now = time (NULL);
   time_t prev = timestamp;
   atomic_read_barrier ();
-  if (ts.tv_sec == prev)
+  if (now == prev)
     return cached_result;
 
   /* XXX Here will come a test for the new system call.  */
@@ -243,7 +227,7 @@ __get_nprocs ()
  out:
   cached_result = result;
   atomic_write_barrier ();
-  timestamp = ts.tv_sec;
+  timestamp = now;
 
   return result;
 }