Browse Source

Make it compile for architectures which have __UCLIBC_HAS_LFS__ defined,
but neither __NR_fadvise64 nor __NR_fadvise64_64.

Peter Kjellerstedt 19 years ago
parent
commit
e1f0882b43

+ 8 - 8
libc/sysdeps/linux/common/posix_fadvise.c

@@ -1,5 +1,5 @@
 /* vi: set sw=4 ts=4: */
-/* 
+/*
  * posix_fadvise() for uClibc
  * http://www.opengroup.org/onlinepubs/009695399/functions/posix_fadvise.html
  *
@@ -13,7 +13,7 @@
 
 #ifdef __NR_fadvise64
 #define __NR___syscall_fadvise64 __NR_fadvise64
-_syscall4(int, __syscall_fadvise64, int, fd, off_t, offset, 
+_syscall4(int, __syscall_fadvise64, int, fd, off_t, offset,
           off_t, len, int, advice);
 int __libc_posix_fadvise(int fd, off_t offset, off_t len, int advice)
 {
@@ -21,14 +21,14 @@ int __libc_posix_fadvise(int fd, off_t offset, off_t len, int advice)
 }
 weak_alias(__libc_posix_fadvise, posix_fadvise);
 
+#if defined __UCLIBC_HAS_LFS__ && !defined __NR_fadvise64_64
+weak_alias(__libc_posix_fadvise, posix_fadvise64);
+#endif
+
 #else
 int posix_fadvise(int fd, off_t offset, off_t len, int advice)
 {
-    __set_errno(ENOSYS);
-    return -1;
+	__set_errno(ENOSYS);
+	return -1;
 }
 #endif
-
-#if ! defined __NR_fadvise64_64 && defined __UCLIBC_HAS_LFS__
-weak_alias(__libc_posix_fadvise, posix_fadvise64);
-#endif

+ 18 - 7
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__ */