From 80422cdc59d10642577d4d8ddcdf7e88256e8faf Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Tue, 6 Mar 2007 08:06:26 +0000 Subject: Add posix_fadvise posix_fadvise64 for arm. Import INTERNAL_SYSCALL macro for i386 from glibc. Use above macro in posix_fadvise implementation if an arch defines it. --- libc/sysdeps/linux/common/posix_fadvise64.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'libc/sysdeps/linux/common/posix_fadvise64.c') diff --git a/libc/sysdeps/linux/common/posix_fadvise64.c b/libc/sysdeps/linux/common/posix_fadvise64.c index d931aff60..31ed5ef03 100644 --- a/libc/sysdeps/linux/common/posix_fadvise64.c +++ b/libc/sysdeps/linux/common/posix_fadvise64.c @@ -24,8 +24,25 @@ #if __WORDSIZE == 64 #define __NR_posix_fadvise64 __NR_fadvise64_64 + +#ifdef INTERNAL_SYSCALL +int posix_fadvise64(int fd, __off64_t offset, __off64_t len, int advice) +{ + if (len != (off_t) len) + return EOVERFLOW; + INTERNAL_SYSCALL_DECL (err); + int ret = INTERNAL_SYSCALL (posix_fadvise64, err, 6, fd, + __LONG_LONG_PAIR ((long) (offset >> 32), + (long) offset), + (off_t) len, advise); + if (!INTERNAL_SYSCALL_ERROR_P (ret, err)) + return 0; + return INTERNAL_SYSCALL_ERRNO (ret, err); +} +#else _syscall4(int, posix_fadvise64, int, fd, __off64_t, offset, __off64_t, len, int, advice); +#endif /* 32 bit implementation is kind of a pita */ #elif __WORDSIZE == 32 -- cgit v1.2.3