]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
sysconf on Linux/ia64 reported outdate versions for some options
authorUlrich Drepper <drepper@gmail.com>
Sun, 15 May 2011 15:18:10 +0000 (11:18 -0400)
committerUlrich Drepper <drepper@gmail.com>
Sun, 15 May 2011 15:18:10 +0000 (11:18 -0400)
The code is also cleaned up to avoid inefficiencies.

ChangeLog
NEWS
sysdeps/unix/sysv/linux/ia64/sysconf.c
sysdeps/unix/sysv/linux/sysconf.c

index 24606483a353580a39d343dbffbe1d6d918a0624..b1c3677347f234ff74b53d6167774fb476dda37c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2011-05-15  Ulrich Drepper  <drepper@gmail.com>
 
+       [BZ #10157]
+       * sysdeps/unix/sysv/linux/sysconf.c (__sysconf): Split out CPUTIME
+       tests into ...
+       (has_cpuclock): ...this.  New function.
+       * sysdeps/unix/sysv/linux/ia64/sysconf.c: Just define HAS_CPUCLOCK
+       macro here based on has_cpuclock code.
+
        [BZ #10149]
        * sysdeps/unix/sysv/linux/dl-osinfo.h (_dl_setup_stack_chk_guard):
        First byte (not low byte) is now always NUL.
diff --git a/NEWS b/NEWS
index fff94be6d44688b881a365ea118c9cccb5acb187..e5aa66e09a0616b150dfb0fce972df1ba657ed65 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -9,13 +9,13 @@ Version 2.14
 
 * The following bugs are resolved with this release:
 
-  386, 9809, 10149, 11257, 11258, 11487, 11532, 11578, 11653, 11668, 11724,
-  11901, 11945, 11947, 11952, 12052, 12083, 12158, 12178, 12200, 12346,
-  12393, 12420, 12432, 12445, 12449, 12453, 12454, 12460, 12469, 12489,
-  12509, 12510, 12511, 12518, 12527, 12541, 12545, 12551, 12582, 12583,
-  12587, 12597, 12601, 12611, 12625, 12626, 12631, 12650, 12653, 12655,
-  12660, 12681, 12685, 12711, 12713, 12714, 12717, 12723, 12724, 12734,
-  12738
+  386, 9809, 10149, 10157, 11257, 11258, 11487, 11532, 11578, 11653, 11668,
+  11724, 11901, 11945, 11947, 11952, 12052, 12083, 12158, 12178, 12200,
+  12346, 12393, 12420, 12432, 12445, 12449, 12453, 12454, 12460, 12469,
+  12489, 12509, 12510, 12511, 12518, 12527, 12541, 12545, 12551, 12582,
+  12583, 12587, 12597, 12601, 12611, 12625, 12626, 12631, 12650, 12653,
+  12655, 12660, 12681, 12685, 12711, 12713, 12714, 12717, 12723, 12724,
+  12734, 12738
 
 * The RPC implementation in libc is obsoleted.  Old programs keep working
   but new programs cannot be linked with the routines in libc anymore.
index 4b5d1ce2cd5abe775eea109b4d648f2164e349d8..67b8251dd3d1a57c119065e99a607033a72faef1 100644 (file)
@@ -1,5 +1,5 @@
-/* Get file-specific information about a file.  Linux version.
-   Copyright (C) 2003, 2004 Free Software Foundation, Inc.
+/* Get file-specific information about a file.  Linux/ia64 version.
+   Copyright (C) 2003, 2004, 2011 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
 
 
 #include "has_cpuclock.c"
+#define HAS_CPUCLOCK() (has_cpuclock () ? _POSIX_VERSION : -1)
 
-static long int linux_sysconf (int name);
-
-
-/* Get the value of the system variable NAME.  */
-long int
-__sysconf (int name)
-{
-  if (name == _SC_CPUTIME || name == _SC_THREAD_CPUTIME)
-    return has_cpuclock () ? 200112L : -1;
-
-  /* Everything else is handled by the more general code.  */
-  return linux_sysconf (name);
-}
 
 /* Now the generic Linux version.  */
-#undef __sysconf
-#define __sysconf static linux_sysconf
 #include "../sysconf.c"
index 50c5528dd88fd1c727b8d1e63c7f4c0e30cc06d5..e44aa994ee608d050d242240b503a74b301af53e 100644 (file)
@@ -1,5 +1,5 @@
 /* Get file-specific information about a file.  Linux version.
-   Copyright (C) 2003, 2004, 2006, 2008, 2009 Free Software Foundation, Inc.
+   Copyright (C) 2003,2004,2006 2008,2009,2011 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
 static long int posix_sysconf (int name);
 
 
+#ifndef HAS_CPUCLOCK
+static long int
+has_cpuclock (void)
+{
+# if defined __NR_clock_getres || HP_TIMING_AVAIL
+  /* If we have HP_TIMING, we will fall back on that if the system
+     call does not work, so we support it either way.  */
+#  if !HP_TIMING_AVAIL
+  /* Check using the clock_getres system call.  */
+  struct timespec ts;
+  INTERNAL_SYSCALL_DECL (err);
+  int r = INTERNAL_SYSCALL (clock_getres, err, 2,
+                           (name == _SC_CPUTIME
+                            ? CLOCK_PROCESS_CPUTIME_ID
+                            : CLOCK_THREAD_CPUTIME_ID),
+                           &ts);
+  if (INTERNAL_SYSCALL_ERROR_P (r, err))
+    return -1;
+#  endif
+  return _POSIX_VERSION;
+# else
+  return -1;
+# endif
+}
+# define HAS_CPUCLOCK() has_cpuclock ()
+#endif
+
+
 /* Get the value of the system variable NAME.  */
 long int
 __sysconf (int name)
@@ -56,27 +84,9 @@ __sysconf (int name)
       }
 #endif
 
-#if defined __NR_clock_getres || HP_TIMING_AVAIL
     case _SC_CPUTIME:
     case _SC_THREAD_CPUTIME:
-      {
-       /* If we have HP_TIMING, we will fall back on that if the system
-          call does not work, so we support it either way.  */
-# if !HP_TIMING_AVAIL
-       /* Check using the clock_getres system call.  */
-       struct timespec ts;
-       INTERNAL_SYSCALL_DECL (err);
-       int r = INTERNAL_SYSCALL (clock_getres, err, 2,
-                                 (name == _SC_CPUTIME
-                                  ? CLOCK_PROCESS_CPUTIME_ID
-                                  : CLOCK_THREAD_CPUTIME_ID),
-                                 &ts);
-       if (INTERNAL_SYSCALL_ERROR_P (r, err))
-         return -1;
-# endif
-       return _POSIX_VERSION;
-      }
-#endif
+      return HAS_CPUCLOCK ();
 
     case _SC_ARG_MAX:
 #if __LINUX_KERNEL_VERSION < 0x020617