about summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux/readahead.c
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2018-04-22 17:55:11 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2018-04-27 17:38:43 -0300
commitc57bf7c15ba179168d01f7c6acde7ecbf5dd9cd8 (patch)
treed60ffc27f581d78947a519b0048128c7dee8f44f /sysdeps/unix/sysv/linux/readahead.c
parent33927914420ad1aec86551c8e5cf085d8ee80ebb (diff)
downloadglibc-c57bf7c15ba179168d01f7c6acde7ecbf5dd9cd8.tar.gz
glibc-c57bf7c15ba179168d01f7c6acde7ecbf5dd9cd8.tar.xz
glibc-c57bf7c15ba179168d01f7c6acde7ecbf5dd9cd8.zip
Consolidate Linux readahead implementation
This patch consolidate Linux readahead implementation on generic
sysdeps/unix/sysv/linux/readahead.c one.  The changes are:

  - Assume __NR_readahead existence with current minimum kernel of 3.2
    for all architectures.

  - Use INLINE_SYSCALL_CALL, __ALIGNMENT_ARG, and SYSCALL_LL64 to pass
    the 64 bit offset.  This allows architectures with different abis
    to use the same implementation.

  - Remove arch-specific readahead implementations.

Checked on x86_64-linux-gnu and i686-linux-gnu.

	* sysdeps/unix/sysv/linux/arm/readahead.c: Remove file.
	* sysdeps/unix/sysv/linux/mips/mips32/readahead.c: Likewise.
	* sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list (readahead):
	Remove.
	* sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list: Likewise.
	* sysdeps/unix/sysv/linux/wordsize-64/syscalls.list: Likewise.
	* sysdeps/unix/sysv/linux/readahead.c (__readahead): Assume
	__NR_readahead existence, and use INLINE_SYSCALL_CALL, __ALIGNMENT_ARG,
	and SYSCALL_LL64.
Diffstat (limited to 'sysdeps/unix/sysv/linux/readahead.c')
-rw-r--r--sysdeps/unix/sysv/linux/readahead.c24
1 files changed, 4 insertions, 20 deletions
diff --git a/sysdeps/unix/sysv/linux/readahead.c b/sysdeps/unix/sysv/linux/readahead.c
index 49f5eb4df7..f84d210f34 100644
--- a/sysdeps/unix/sysv/linux/readahead.c
+++ b/sysdeps/unix/sysv/linux/readahead.c
@@ -16,31 +16,15 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
-#include <errno.h>
 #include <fcntl.h>
-#include <sys/types.h>
-
+#include <errno.h>
 #include <sysdep.h>
-#include <sys/syscall.h>
-
-
-#ifdef __NR_readahead
 
 ssize_t
 __readahead (int fd, off64_t offset, size_t count)
 {
-  return INLINE_SYSCALL (readahead, 4, fd,
-			 __LONG_LONG_PAIR ((off_t) (offset >> 32),
-					   (off_t) (offset & 0xffffffff)),
-			 count);
+  return INLINE_SYSCALL_CALL (readahead, fd,
+			      __ALIGNMENT_ARG SYSCALL_LL64 (offset),
+			      count);
 }
-#else
-ssize_t
-__readahead (int fd, off64_t offset, size_t count)
-{
-  return INLINE_SYSCALL_ERROR_RETURN_VALUE (ENOSYS);
-}
-stub_warning (readahead)
-#endif
-
 weak_alias (__readahead, readahead)