From 0f5b71850e7ae2a4fefade72c73556166d52bc93 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Wed, 25 Jun 2014 11:31:51 +0000 Subject: [PATCH] Remove __ASSUME_COMPLETE_READV_WRITEV. 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 . [!__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 . [!__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 | 21 +++++++++++++++++++++ sysdeps/unix/sysv/linux/kernel-features.h | 5 ----- sysdeps/unix/sysv/linux/readv.c | 25 +------------------------ sysdeps/unix/sysv/linux/writev.c | 24 +----------------------- 4 files changed, 23 insertions(+), 52 deletions(-) diff --git a/ChangeLog b/ChangeLog index ad4ece6..60a665d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,24 @@ +2014-06-25 Joseph Myers + + * sysdeps/unix/sysv/linux/kernel-features.h + (__ASSUME_COMPLETE_READV_WRITEV): Remove macro. + * sysdeps/unix/sysv/linux/readv.c: Do not include + . + [!__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 + . + [!__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 * sysdeps/posix/tempname.c: Merge from gnulib, cosmetic diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h index b39b295..015b1c7 100644 --- a/sysdeps/unix/sysv/linux/kernel-features.h +++ b/sysdeps/unix/sysv/linux/kernel-features.h @@ -94,11 +94,6 @@ # 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__) diff --git a/sysdeps/unix/sysv/linux/readv.c b/sysdeps/unix/sysv/linux/readv.c index 48eae46..a977d17 100644 --- a/sysdeps/unix/sysv/linux/readv.c +++ b/sysdeps/unix/sysv/linux/readv.c @@ -23,19 +23,8 @@ #include #include -#include - -#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 -#endif diff --git a/sysdeps/unix/sysv/linux/writev.c b/sysdeps/unix/sysv/linux/writev.c index 06c4c9c..f19221f 100644 --- a/sysdeps/unix/sysv/linux/writev.c +++ b/sysdeps/unix/sysv/linux/writev.c @@ -23,19 +23,9 @@ #include #include -#include -#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 -#endif -- 2.7.4