Message ID | Pine.LNX.4.64.1406201600200.16806@digraph.polyomino.org.uk |
---|---|
State | New |
Headers | show |
Ping. This patch <https://sourceware.org/ml/libc-alpha/2014-06/msg00518.html> is pending review.
On 20 June 2014 17:00, Joseph S. Myers <joseph@codesourcery.com> wrote: > 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. > > 2014-06-20 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. This looks ok to me. > diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h > index 026f89f..acc7ca3 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 <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 > 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 <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 > > -- > Joseph S. Myers > joseph@codesourcery.com
OK
diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h index 026f89f..acc7ca3 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 <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 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 <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