about summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux/clock_getres.c
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2012-08-16 14:03:43 +0000
committerJoseph Myers <joseph@codesourcery.com>2012-08-16 14:03:43 +0000
commit93a78ac437ba44f493333d7e2a4b0249839ce460 (patch)
treebe93f2f5a76313d6decc7ccca7623671e23c7974 /sysdeps/unix/sysv/linux/clock_getres.c
parent4b4f2771c217d7b038bcfc17c985ba057da554db (diff)
downloadglibc-93a78ac437ba44f493333d7e2a4b0249839ce460.tar.gz
glibc-93a78ac437ba44f493333d7e2a4b0249839ce460.tar.xz
glibc-93a78ac437ba44f493333d7e2a4b0249839ce460.zip
Remove __ASSUME_POSIX_TIMERS.
Diffstat (limited to 'sysdeps/unix/sysv/linux/clock_getres.c')
-rw-r--r--sysdeps/unix/sysv/linux/clock_getres.c88
1 files changed, 12 insertions, 76 deletions
diff --git a/sysdeps/unix/sysv/linux/clock_getres.c b/sysdeps/unix/sysv/linux/clock_getres.c
index e7e3138543..2bada33b40 100644
--- a/sysdeps/unix/sysv/linux/clock_getres.c
+++ b/sysdeps/unix/sysv/linux/clock_getres.c
@@ -1,5 +1,5 @@
 /* clock_getres -- Get the resolution of a POSIX clockid_t.  Linux version.
-   Copyright (C) 2003,2004,2005,2006,2008,2010 Free Software Foundation, Inc.
+   Copyright (C) 2003-2012 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
@@ -35,11 +35,9 @@
   retval = INLINE_VSYSCALL (clock_getres, 2, clock_id, res); \
   break
 
-#ifdef __ASSUME_POSIX_TIMERS
-
-/* This means the REALTIME and MONOTONIC clock are definitely
-   supported in the kernel.  */
-# define SYSDEP_GETRES							      \
+/* The REALTIME and MONOTONIC clock are definitely supported in the
+   kernel.  */
+#define SYSDEP_GETRES							      \
   SYSDEP_GETRES_CPUTIME							      \
   case CLOCK_REALTIME:							      \
   case CLOCK_MONOTONIC:							      \
@@ -48,57 +46,6 @@
   case CLOCK_MONOTONIC_COARSE:						      \
     SYSCALL_GETRES
 
-# define __libc_missing_posix_timers 0
-#elif defined __NR_clock_getres
-/* Is the syscall known to exist?  */
-extern int __libc_missing_posix_timers attribute_hidden;
-
-static inline int
-maybe_syscall_getres (clockid_t clock_id, struct timespec *res)
-{
-  int e = EINVAL;
-
-  if (!__libc_missing_posix_timers)
-    {
-      INTERNAL_SYSCALL_DECL (err);
-      int r = INTERNAL_VSYSCALL (clock_getres, err, 2, clock_id, res);
-      if (!INTERNAL_SYSCALL_ERROR_P (r, err))
-	return 0;
-
-      e = INTERNAL_SYSCALL_ERRNO (r, err);
-      if (e == ENOSYS)
-	{
-	  __libc_missing_posix_timers = 1;
-	  e = EINVAL;
-	}
-    }
-
-  return e;
-}
-
-/* The REALTIME and MONOTONIC clock might be available.  Try the
-   syscall first.  */
-# define SYSDEP_GETRES							      \
-  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;								      \
-    /* Fallback code.  */						      \
-    if (retval == EINVAL && clock_id == CLOCK_REALTIME)			      \
-      retval = realtime_getres (res);					      \
-    else								      \
-      {									      \
-	__set_errno (retval);						      \
-	retval = -1;							      \
-      }									      \
-    break;
-#endif
-
 #ifdef __NR_clock_getres
 /* We handled the REALTIME clock here.  */
 # define HANDLED_REALTIME	1
@@ -126,26 +73,15 @@ maybe_syscall_getres_cpu (clockid_t clock_id, struct timespec *res)
 	return 0;
 
       e = INTERNAL_SYSCALL_ERRNO (r, err);
-#  ifndef __ASSUME_POSIX_TIMERS
-      if (e == ENOSYS)
-	{
-	  __libc_missing_posix_timers = 1;
-	  __libc_missing_posix_cpu_timers = 1;
-	  e = EINVAL;
-	}
-      else
-#  endif
+      if (e == EINVAL)
 	{
-	  if (e == EINVAL)
-	    {
-	      /* 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);
-	      if (INTERNAL_SYSCALL_ERROR_P (r, err))
-		__libc_missing_posix_cpu_timers = 1;
-	    }
+	  /* 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);
+	  if (INTERNAL_SYSCALL_ERROR_P (r, err))
+	    __libc_missing_posix_cpu_timers = 1;
 	}
     }