about summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@gmail.com>2011-09-06 20:22:37 -0400
committerUlrich Drepper <drepper@gmail.com>2011-09-06 20:22:37 -0400
commitd53a73acdbf6ac6eb99cd06f5dd695da58d9e8f5 (patch)
tree065eca94bcea3f9d0559be0565263ffda8ec333c
parent42a36f6670797912fa4c2b0e0cb3792e88c1a3bc (diff)
downloadglibc-d53a73acdbf6ac6eb99cd06f5dd695da58d9e8f5.tar.gz
glibc-d53a73acdbf6ac6eb99cd06f5dd695da58d9e8f5.tar.xz
glibc-d53a73acdbf6ac6eb99cd06f5dd695da58d9e8f5.zip
Avoid gettimeofday vsyscall
-rw-r--r--ChangeLog5
-rw-r--r--sysdeps/unix/sysv/linux/getsysstats.c22
2 files changed, 8 insertions, 19 deletions
diff --git a/ChangeLog b/ChangeLog
index fd78d99289..32e74d7d86 100644
--- 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
diff --git a/sysdeps/unix/sysv/linux/getsysstats.c b/sysdeps/unix/sysv/linux/getsysstats.c
index b9bae3df98..7feb7a1802 100644
--- a/sysdeps/unix/sysv/linux/getsysstats.c
+++ b/sysdeps/unix/sysv/linux/getsysstats.c
@@ -37,15 +37,6 @@
 #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;
 }