Message ID | 1524482034-32142-1-git-send-email-adhemerval.zanella@linaro.org |
---|---|
State | Accepted |
Commit | c57bf7c15ba179168d01f7c6acde7ecbf5dd9cd8 |
Headers | show |
Series | Consolidate Linux readahead implementation | expand |
I will commit this shortly if no one opposes it. On 23/04/2018 08:13, Adhemerval Zanella wrote: > 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 supreflous code. > > 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. > --- > ChangeLog | 13 ++++++++ > sysdeps/unix/sysv/linux/arm/readahead.c | 37 ---------------------- > sysdeps/unix/sysv/linux/mips/mips32/readahead.c | 1 - > .../unix/sysv/linux/mips/mips64/n32/syscalls.list | 2 -- > .../unix/sysv/linux/mips/mips64/n64/syscalls.list | 2 -- > .../sysv/linux/powerpc/powerpc32/syscalls.list | 3 -- > sysdeps/unix/sysv/linux/readahead.c | 24 +++----------- > sysdeps/unix/sysv/linux/wordsize-64/syscalls.list | 1 - > 8 files changed, 17 insertions(+), 66 deletions(-) > delete mode 100644 sysdeps/unix/sysv/linux/arm/readahead.c > delete mode 100644 sysdeps/unix/sysv/linux/mips/mips32/readahead.c > > diff --git a/sysdeps/unix/sysv/linux/arm/readahead.c b/sysdeps/unix/sysv/linux/arm/readahead.c > deleted file mode 100644 > index 4a3c87f..0000000 > --- a/sysdeps/unix/sysv/linux/arm/readahead.c > +++ /dev/null > @@ -1,37 +0,0 @@ > -/* Provide kernel hint to read ahead. > - Copyright (C) 2002-2018 Free Software Foundation, Inc. > - This file is part of the GNU C Library. > - > - The GNU C Library is free software; you can redistribute it and/or > - modify it under the terms of the GNU Lesser General Public > - License as published by the Free Software Foundation; either > - version 2.1 of the License, or (at your option) any later version. > - > - The GNU C Library is distributed in the hope that it will be useful, > - but WITHOUT ANY WARRANTY; without even the implied warranty of > - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > - Lesser General Public License for more details. > - > - You should have received a copy of the GNU Lesser General Public > - 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 <endian.h> > - > -#include <sysdep.h> > -#include <sys/syscall.h> > - > - > -ssize_t > -__readahead (int fd, off64_t offset, size_t count) > -{ > - return INLINE_SYSCALL (readahead, 5, fd, 0, > - __LONG_LONG_PAIR ((off_t) (offset >> 32), > - (off_t) (offset & 0xffffffff)), > - count); > -} > - > -weak_alias (__readahead, readahead) > diff --git a/sysdeps/unix/sysv/linux/mips/mips32/readahead.c b/sysdeps/unix/sysv/linux/mips/mips32/readahead.c > deleted file mode 100644 > index 80170c3..0000000 > --- a/sysdeps/unix/sysv/linux/mips/mips32/readahead.c > +++ /dev/null > @@ -1 +0,0 @@ > -#include <sysdeps/unix/sysv/linux/arm/readahead.c> > diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list b/sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list > index 5f3d047..33d968f 100644 > --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list > +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list > @@ -4,8 +4,6 @@ > # return value. > lseek64 - lseek i:iii __lseek64 __libc_lseek64 lseek64 llseek > > -readahead - readahead i:iii __readahead readahead > - > prlimit64 EXTRA prlimit64 i:iipp prlimit64 > > fanotify_mark EXTRA fanotify_mark i:iiiis fanotify_mark > diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list b/sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list > index 2866420..8e7d516 100644 > --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list > +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list > @@ -1,7 +1,5 @@ > # File name Caller Syscall name # args Strong name Weak names > > -readahead - readahead i:iii __readahead readahead > - > prlimit EXTRA prlimit64 i:iipp prlimit prlimit64 > > fanotify_mark EXTRA fanotify_mark i:iiiis fanotify_mark > diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list b/sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list > index 9313747..966856e 100644 > --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list > +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list > @@ -3,8 +3,5 @@ > chown - chown i:sii __chown chown@@GLIBC_2.1 > lchown - lchown i:sii __lchown lchown@@GLIBC_2.0 chown@GLIBC_2.0 > > -# Due to 64bit alignment there is a dummy second parameter > -readahead - readahead i:iiiii __readahead readahead > - > prlimit64 EXTRA prlimit64 i:iipp prlimit64 > fanotify_mark EXTRA fanotify_mark i:iiiiis fanotify_mark > diff --git a/sysdeps/unix/sysv/linux/readahead.c b/sysdeps/unix/sysv/linux/readahead.c > index 49f5eb4..f84d210 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) > diff --git a/sysdeps/unix/sysv/linux/wordsize-64/syscalls.list b/sysdeps/unix/sysv/linux/wordsize-64/syscalls.list > index 4bb7ebf..5de6ec8 100644 > --- a/sysdeps/unix/sysv/linux/wordsize-64/syscalls.list > +++ b/sysdeps/unix/sysv/linux/wordsize-64/syscalls.list > @@ -2,7 +2,6 @@ > > fstatfs - fstatfs i:ip __fstatfs fstatfs fstatfs64 __fstatfs64 > statfs - statfs i:sp __statfs statfs statfs64 > -readahead - readahead i:iii __readahead readahead > sendfile - sendfile i:iipi sendfile sendfile64 > prlimit EXTRA prlimit64 i:iipp prlimit prlimit64 > >
diff --git a/sysdeps/unix/sysv/linux/arm/readahead.c b/sysdeps/unix/sysv/linux/arm/readahead.c deleted file mode 100644 index 4a3c87f..0000000 --- a/sysdeps/unix/sysv/linux/arm/readahead.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Provide kernel hint to read ahead. - Copyright (C) 2002-2018 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - 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 <endian.h> - -#include <sysdep.h> -#include <sys/syscall.h> - - -ssize_t -__readahead (int fd, off64_t offset, size_t count) -{ - return INLINE_SYSCALL (readahead, 5, fd, 0, - __LONG_LONG_PAIR ((off_t) (offset >> 32), - (off_t) (offset & 0xffffffff)), - count); -} - -weak_alias (__readahead, readahead) diff --git a/sysdeps/unix/sysv/linux/mips/mips32/readahead.c b/sysdeps/unix/sysv/linux/mips/mips32/readahead.c deleted file mode 100644 index 80170c3..0000000 --- a/sysdeps/unix/sysv/linux/mips/mips32/readahead.c +++ /dev/null @@ -1 +0,0 @@ -#include <sysdeps/unix/sysv/linux/arm/readahead.c> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list b/sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list index 5f3d047..33d968f 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list @@ -4,8 +4,6 @@ # return value. lseek64 - lseek i:iii __lseek64 __libc_lseek64 lseek64 llseek -readahead - readahead i:iii __readahead readahead - prlimit64 EXTRA prlimit64 i:iipp prlimit64 fanotify_mark EXTRA fanotify_mark i:iiiis fanotify_mark diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list b/sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list index 2866420..8e7d516 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list @@ -1,7 +1,5 @@ # File name Caller Syscall name # args Strong name Weak names -readahead - readahead i:iii __readahead readahead - prlimit EXTRA prlimit64 i:iipp prlimit prlimit64 fanotify_mark EXTRA fanotify_mark i:iiiis fanotify_mark diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list b/sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list index 9313747..966856e 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list @@ -3,8 +3,5 @@ chown - chown i:sii __chown chown@@GLIBC_2.1 lchown - lchown i:sii __lchown lchown@@GLIBC_2.0 chown@GLIBC_2.0 -# Due to 64bit alignment there is a dummy second parameter -readahead - readahead i:iiiii __readahead readahead - prlimit64 EXTRA prlimit64 i:iipp prlimit64 fanotify_mark EXTRA fanotify_mark i:iiiiis fanotify_mark diff --git a/sysdeps/unix/sysv/linux/readahead.c b/sysdeps/unix/sysv/linux/readahead.c index 49f5eb4..f84d210 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) diff --git a/sysdeps/unix/sysv/linux/wordsize-64/syscalls.list b/sysdeps/unix/sysv/linux/wordsize-64/syscalls.list index 4bb7ebf..5de6ec8 100644 --- a/sysdeps/unix/sysv/linux/wordsize-64/syscalls.list +++ b/sysdeps/unix/sysv/linux/wordsize-64/syscalls.list @@ -2,7 +2,6 @@ fstatfs - fstatfs i:ip __fstatfs fstatfs fstatfs64 __fstatfs64 statfs - statfs i:sp __statfs statfs statfs64 -readahead - readahead i:iii __readahead readahead sendfile - sendfile i:iipi sendfile sendfile64 prlimit EXTRA prlimit64 i:iipp prlimit prlimit64