This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]