This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] linux: posix_fadvise: support __NR_fadvise64_64
On Thu, Dec 6, 2012 at 3:06 PM, Mike Frysinger <vapier@gentoo.org> wrote:
> From: Carlos O'Donell <carlos_odonell@mentor.com>
>
> Some arches do not have a __NR_fadvise64 but do have __NR_fadvise64_64.
> If the former is unavailable, fallback to the latter.
>
> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Reviewed-by: Carlos O'Donell <carlos@systemhalted.org>
> 2012-12-06 Carlos O'Donell <carlos_odonell@mentor.com>
> Mike Frysinger <vapier@gentoo.org>
>
> * sysdeps/unix/sysv/linux/posix_fadvise.c (posix_fadvise): Also
> check for __NR_fadvise64_64.
This is strictly a bug fix and should be OK for master right now.
It also doesn't change the generated code for any working machines.
This looks good to me and fixes fadvise on hppa where we have only fadvise64_64.
OK to checkin with copyright year update.
> ---
> sysdeps/unix/sysv/linux/posix_fadvise.c | 11 ++++++++++-
> 1 file changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/sysdeps/unix/sysv/linux/posix_fadvise.c b/sysdeps/unix/sysv/linux/posix_fadvise.c
> index cf28faf..0440816 100644
> --- a/sysdeps/unix/sysv/linux/posix_fadvise.c
> +++ b/sysdeps/unix/sysv/linux/posix_fadvise.c
Update copyright year.
> @@ -25,11 +25,20 @@
> int
> posix_fadvise (int fd, off_t offset, off_t len, int advise)
> {
> -#ifdef __NR_fadvise64
> +#if defined(__NR_fadvise64) || defined(__NR_fadvise64_64)
> INTERNAL_SYSCALL_DECL (err);
> +# ifdef __NR_fadvise64
> int ret = INTERNAL_SYSCALL (fadvise64, err, 5, fd,
> __LONG_LONG_PAIR (offset >> 31, offset), len,
> advise);
> +# else
> + int ret = INTERNAL_SYSCALL (fadvise64_64, err, 6, fd,
> + __LONG_LONG_PAIR ((long) (offset >> 31),
> + (long) offset),
> + __LONG_LONG_PAIR ((long) (len >> 31),
> + (long) len),
> + advise);
> +# endif
> if (INTERNAL_SYSCALL_ERROR_P (ret, err))
> return INTERNAL_SYSCALL_ERRNO (ret, err);
> return 0;
> --
> 1.7.12.4
Cheers,
Carlos.