summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/common/posix_fadvise64.c
diff options
context:
space:
mode:
Diffstat (limited to 'libc/sysdeps/linux/common/posix_fadvise64.c')
-rw-r--r--libc/sysdeps/linux/common/posix_fadvise64.c25
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__ */