This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH] linux: posix_fadvise: support __NR_fadvise64_64
- From: Mike Frysinger <vapier at gentoo dot org>
- To: libc-alpha at sourceware dot org
- Cc: Carlos O'Donell <carlos_odonell at mentor dot com>
- Date: Thu, 6 Dec 2012 15:06:23 -0500
- Subject: [PATCH] linux: posix_fadvise: support __NR_fadvise64_64
- References: <201212040215.13715.vapier@gentoo.org>
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>
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.
---
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
@@ -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