Browse Source

touchup how we declare the posix_fadvise functions and fix the case where posix_fadvise kernel call exists but not posix_fadvise64

Mike Frysinger 18 năm trước cách đây
mục cha
commit
f027f2b507

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

@@ -8,21 +8,20 @@
  * GNU Library General Public License (LGPL) version 2 or later.
  */
 
+/* need to hide the posix_fadvise64 prototype or the weak_alias()
+ * will fail when __NR_fadvise64_64 doesnt exist */
+#define posix_fadvise64 __hide_posix_fadvise64
 #include "syscalls.h"
 #include <fcntl.h>
+#undef posix_fadvise64
 
 #ifdef __NR_fadvise64
-#define __NR___syscall_fadvise64 __NR_fadvise64
-_syscall4(int, __syscall_fadvise64, int, fd, off_t, offset,
+#define __NR_posix_fadvise __NR_fadvise64
+_syscall4(int, posix_fadvise, int, fd, off_t, offset,
           off_t, len, int, advice);
-int __libc_posix_fadvise(int fd, off_t offset, off_t len, int advice)
-{
-	return (__syscall_fadvise64(fd, offset, len, advice));
-}
-weak_alias(__libc_posix_fadvise, posix_fadvise);
 
 #if defined __UCLIBC_HAS_LFS__ && !defined __NR_fadvise64_64
-weak_alias(__libc_posix_fadvise, posix_fadvise64);
+weak_alias(posix_fadvise, posix_fadvise64);
 #endif
 
 #else

+ 6 - 10
libc/sysdeps/linux/common/posix_fadvise64.c

@@ -19,34 +19,30 @@
 
 #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,
+
+#define __NR_posix_fadvise64 __NR_fadvise64_64
+_syscall4(int, posix_fadvise64, int, fd, __off64_t, offset,
           __off64_t, len, int, advice);
-int __libc_posix_fadvise64(int fd, __off64_t offset, __off64_t len, int advice)
-{
-	return (__syscall_fadvise64_64(fd, offset, len, advice));
-}
-weak_alias(__libc_posix_fadvise64, posix_fadvise64);
 
 /* 32 bit implementation is kind of a pita */
 #elif __WORDSIZE == 32
 
 #ifdef _syscall6 /* workaround until everyone has _syscall6() */
+#define __NR___syscall_fadvise64_64 __NR_fadvise64_64
 _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)
+int posix_fadvise64(int fd, __off64_t offset, __off64_t len, int advice)
 {
 	return (__syscall_fadvise64_64(fd,
 	        __LONG_LONG_PAIR(offset >> 32, offset &  0xffffffff),
 	        __LONG_LONG_PAIR(len >> 32, len & 0xffffffff),
 	        advice));
 }
-weak_alias(__libc_posix_fadvise64, posix_fadvise64);
 #else
 #warning _syscall6 has not been defined for your machine :(
 #endif /* _syscall6 */
@@ -56,7 +52,7 @@ weak_alias(__libc_posix_fadvise64, posix_fadvise64);
 #endif
 
 #elif !defined __NR_fadvise64
-/* This is declared as a weak alias in posix_fadvice.c if __NR_fadvise64
+/* This is declared as a weak alias in posix_fadvise.c if __NR_fadvise64
  * is defined.
  */
 int posix_fadvise64(int fd, __off64_t offset, __off64_t len, int advice)