+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
# 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__)
#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)
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
#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)
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