From: Mike Frysinger Date: Thu, 6 Dec 2012 20:01:35 +0000 (-0500) Subject: linux: posix_fadvise: support __NR_fadvise64_64 X-Git-Tag: upstream/2.30~9782 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=e933a9432cab6ff8d7995b984f0da625b3592f88;p=external%2Fglibc.git linux: posix_fadvise: support __NR_fadvise64_64 Some arches do not have a __NR_fadvise64 but do have __NR_fadvise64_64. If the former is unavailable, fallback to the latter. Reviewed-by: Carlos O'Donell Signed-off-by: Mike Frysinger --- diff --git a/ChangeLog b/ChangeLog index 36b2bb0..2dfde80 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2012-12-06 Carlos O'Donell + Mike Frysinger + + * sysdeps/unix/sysv/linux/posix_fadvise.c (posix_fadvise): Also + check for __NR_fadvise64_64. + 2012-12-06 Chris Metcalf * sysdeps/generic/fpu_control.h (_FPU_GETCW): Define to set cw to diff --git a/sysdeps/unix/sysv/linux/posix_fadvise.c b/sysdeps/unix/sysv/linux/posix_fadvise.c index cf28faf..064281f 100644 --- a/sysdeps/unix/sysv/linux/posix_fadvise.c +++ b/sysdeps/unix/sysv/linux/posix_fadvise.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. +/* Copyright (C) 2003-2012 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 @@ -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;