Remove __ASSUME_COMPLETE_READV_WRITEV.
authorJoseph Myers <joseph@codesourcery.com>
Wed, 25 Jun 2014 11:31:51 +0000 (11:31 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Wed, 25 Jun 2014 11:31:51 +0000 (11:31 +0000)
This patch removes the __ASSUME_COMPLETE_READV_WRITEV
kernel-features.h macro, now that it can be unconditionally assumed to
be true.  (The relevant kernel feature was added some time between 2.0
and 2.2, and this macro is only used in sysdeps/unix/sysv/linux/.)

Tested x86_64 that the disassembly of installed shared libraries is
unchanged by this patch.

* sysdeps/unix/sysv/linux/kernel-features.h
(__ASSUME_COMPLETE_READV_WRITEV): Remove macro.
* sysdeps/unix/sysv/linux/readv.c: Do not include
<kernel-features.h>.
[!__ASSUME_COMPLETE_READV_WRITEV]: Remove conditional code.
[!UIO_FASTIOV] (UIO_FASTIOV): Remove macro.
(__libc_readv) [__ASSUME_COMPLETE_READV_WRITEV]: Make code
unconditional.
(__libc_readv) [!__ASSUME_COMPLETE_READV_WRITEV]: Remove
conditional code.
* sysdeps/unix/sysv/linux/writev.c: Do not include
<kernel-features.h>.
[!__ASSUME_COMPLETE_READV_WRITEV]: Remove conditional code.
[!UIO_FASTIOV] (UIO_FASTIOV): Remove macro.
(__libc_writev) [__ASSUME_COMPLETE_READV_WRITEV]: Make code
unconditional.
(__libc_writev) [!__ASSUME_COMPLETE_READV_WRITEV]: Remove
conditional code.

ChangeLog
sysdeps/unix/sysv/linux/kernel-features.h
sysdeps/unix/sysv/linux/readv.c
sysdeps/unix/sysv/linux/writev.c

index ad4ece6..60a665d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,24 @@
+2014-06-25  Joseph Myers  <joseph@codesourcery.com>
+
+       * sysdeps/unix/sysv/linux/kernel-features.h
+       (__ASSUME_COMPLETE_READV_WRITEV): Remove macro.
+       * sysdeps/unix/sysv/linux/readv.c: Do not include
+       <kernel-features.h>.
+       [!__ASSUME_COMPLETE_READV_WRITEV]: Remove conditional code.
+       [!UIO_FASTIOV] (UIO_FASTIOV): Remove macro.
+       (__libc_readv) [__ASSUME_COMPLETE_READV_WRITEV]: Make code
+       unconditional.
+       (__libc_readv) [!__ASSUME_COMPLETE_READV_WRITEV]: Remove
+       conditional code.
+       * sysdeps/unix/sysv/linux/writev.c: Do not include
+       <kernel-features.h>.
+       [!__ASSUME_COMPLETE_READV_WRITEV]: Remove conditional code.
+       [!UIO_FASTIOV] (UIO_FASTIOV): Remove macro.
+       (__libc_writev) [__ASSUME_COMPLETE_READV_WRITEV]: Make code
+       unconditional.
+       (__libc_writev) [!__ASSUME_COMPLETE_READV_WRITEV]: Remove
+       conditional code.
+
 2014-06-25  Will Newton  <will.newton@linaro.org>
 
        * sysdeps/posix/tempname.c: Merge from gnulib, cosmetic
index b39b295..015b1c7 100644 (file)
 # define __ASSUME_SET_ROBUST_LIST      1
 #endif
 
-/* Pessimistically assume that 2.6.18 introduced real handling of
-   large numbers of requests to readv and writev and that we don't
-   need a fallback.  It likely worked for much longer.  */
-#define __ASSUME_COMPLETE_READV_WRITEV 1
-
 /* Support for PI futexes was added in 2.6.18 (but some architectures
    lack futex_atomic_cmpxchg_inatomic in some configurations).  */
 #if !(defined __sparc__ && !defined __arch64__ && !defined __sparc_v9__)
index 48eae46..a977d17 100644 (file)
 
 #include <sysdep-cancel.h>
 #include <sys/syscall.h>
-#include <kernel-features.h>
-
-#ifndef __ASSUME_COMPLETE_READV_WRITEV
-static ssize_t __atomic_readv_replacement (int, const struct iovec *,
-                                          int) internal_function;
-#endif
-
-
-/* Not all versions of the kernel support the large number of records.  */
-#ifndef UIO_FASTIOV
-# define UIO_FASTIOV   8       /* 8 is a safe number.  */
-#endif
 
+/* Consider moving to syscalls.list.  */
 
 ssize_t
 __libc_readv (fd, vector, count)
@@ -56,19 +45,7 @@ __libc_readv (fd, vector, count)
       LIBC_CANCEL_RESET (oldtype);
     }
 
-#ifdef __ASSUME_COMPLETE_READV_WRITEV
   return result;
-#else
-  if (result >= 0 || errno != EINVAL || count <= UIO_FASTIOV)
-    return result;
-
-  return __atomic_readv_replacement (fd, vector, count);
-#endif
 }
 strong_alias (__libc_readv, __readv)
 weak_alias (__libc_readv, readv)
-
-#ifndef __ASSUME_COMPLETE_READV_WRITEV
-# define __libc_readv static internal_function __atomic_readv_replacement
-# include <sysdeps/posix/readv.c>
-#endif
index 06c4c9c..f19221f 100644 (file)
 
 #include <sysdep-cancel.h>
 #include <sys/syscall.h>
-#include <kernel-features.h>
 
-#ifndef __ASSUME_COMPLETE_READV_WRITEV
-static ssize_t __atomic_writev_replacement (int, const struct iovec *,
-                                           int) internal_function;
-#endif
-
-
-/* Not all versions of the kernel support the large number of records.  */
-#ifndef UIO_FASTIOV
-# define UIO_FASTIOV   8       /* 8 is a safe number.  */
-#endif
 
+/* Consider moving to syscalls.list.  */
 
 ssize_t
 __libc_writev (fd, vector, count)
@@ -56,19 +46,7 @@ __libc_writev (fd, vector, count)
       LIBC_CANCEL_RESET (oldtype);
     }
 
-#ifdef __ASSUME_COMPLETE_READV_WRITEV
   return result;
-#else
-  if (result >= 0 || errno != EINVAL || count <= UIO_FASTIOV)
-    return result;
-
-  return __atomic_writev_replacement (fd, vector, count);
-#endif
 }
 strong_alias (__libc_writev, __writev)
 weak_alias (__libc_writev, writev)
-
-#ifndef __ASSUME_COMPLETE_READV_WRITEV
-# define __libc_writev static internal_function __atomic_writev_replacement
-# include <sysdeps/posix/writev.c>
-#endif