diff options
Diffstat (limited to 'libc/sysdeps/linux/common/posix_fadvise64.c')
-rw-r--r-- | libc/sysdeps/linux/common/posix_fadvise64.c | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/libc/sysdeps/linux/common/posix_fadvise64.c b/libc/sysdeps/linux/common/posix_fadvise64.c index 93d56d6cb..a5dbe8de2 100644 --- a/libc/sysdeps/linux/common/posix_fadvise64.c +++ b/libc/sysdeps/linux/common/posix_fadvise64.c @@ -1,5 +1,5 @@ /* vi: set sw=4 ts=4: */ -/* +/* * posix_fadvise64() for uClibc * http://www.opengroup.org/onlinepubs/009695399/functions/posix_fadvise.html * @@ -17,12 +17,13 @@ #include <sys/syscall.h> #include <fcntl.h> -#if defined __UCLIBC_HAS_LFS__ && defined __NR_fadvise64_64 +#ifdef __UCLIBC_HAS_LFS__ +#ifdef __NR_fadvise64_64 #define __NR___syscall_fadvise64_64 __NR_fadvise64_64 /* 64 bit implementation is cake ... or more like pie ... */ #if __WORDSIZE == 64 -_syscall4(int, __syscall_fadvise64_64, int, fd, __off64_t, offset, +_syscall4(int, __syscall_fadvise64_64, int, fd, __off64_t, offset, __off64_t, len, int, advice); int __libc_posix_fadvise64(int fd, __off64_t offset, __off64_t len, int advice) { @@ -34,9 +35,9 @@ weak_alias(__libc_posix_fadvise64, posix_fadvise64); #elif __WORDSIZE == 32 #ifdef _syscall6 /* workaround until everyone has _syscall6() */ -_syscall6(int, __syscall_fadvise64_64, int, fd, - unsigned long, high_offset, unsigned long, low_offset, - unsigned long, high_len, unsigned long, low_len, +_syscall6(int, __syscall_fadvise64_64, int, fd, + unsigned long, high_offset, unsigned long, low_offset, + unsigned long, high_len, unsigned long, low_len, int, advice); int __libc_posix_fadvise64(int fd, __off64_t offset, __off64_t len, int advice) { @@ -54,4 +55,14 @@ weak_alias(__libc_posix_fadvise64, posix_fadvise64); #error your machine is neither 32 bit or 64 bit ... it must be magical #endif -#endif +#elif !defined __NR_fadvise64 +/* This is declared as a weak alias in posix_fadvice.c if __NR_fadvise64 + * is defined. + */ +int posix_fadvise64(int fd, __off64_t offset, __off64_t len, int advice) +{ + __set_errno(ENOSYS); + return -1; +} +#endif /* __NR_fadvise64_64 */ +#endif /* __UCLIBC_HAS_LFS__ */ |