summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/common/posix_fadvise.c
diff options
context:
space:
mode:
authorKhem Raj <kraj@mvista.com>2007-03-06 08:06:26 +0000
committerKhem Raj <kraj@mvista.com>2007-03-06 08:06:26 +0000
commit80422cdc59d10642577d4d8ddcdf7e88256e8faf (patch)
tree427184e1f818b9a40f137371d6259fa97abab560 /libc/sysdeps/linux/common/posix_fadvise.c
parentd81e53c5fa66c5accc0d436e58c36fd62f7fee0c (diff)
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.
Diffstat (limited to 'libc/sysdeps/linux/common/posix_fadvise.c')
-rw-r--r--libc/sysdeps/linux/common/posix_fadvise.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/libc/sysdeps/linux/common/posix_fadvise.c b/libc/sysdeps/linux/common/posix_fadvise.c
index 47cf66a9f..3bd689ffb 100644
--- a/libc/sysdeps/linux/common/posix_fadvise.c
+++ b/libc/sysdeps/linux/common/posix_fadvise.c
@@ -19,9 +19,25 @@
#ifdef __NR_fadvise64
#define __NR_posix_fadvise __NR_fadvise64
+/* get rid of following conditional when
+ all supported arches are having INTERNAL_SYSCALL defined
+*/
+#ifdef INTERNAL_SYSCALL
+int posix_fadvise(int fd, off_t offset, off_t len, int advice)
+{
+ INTERNAL_SYSCALL_DECL(err);
+ int ret = (int) (INTERNAL_SYSCALL(posix_fadvise, err, 5, fd,
+ __LONG_LONG_PAIR (offset >> 31, offset), len, advice));
+ if (INTERNAL_SYSCALL_ERROR_P (ret, err))
+ return INTERNAL_SYSCALL_ERRNO (ret, err);
+ return 0;
+}
+#else
_syscall4(int, posix_fadvise, int, fd, off_t, offset,
off_t, len, int, advice);
+#endif
+
#if defined __UCLIBC_HAS_LFS__ && (!defined __NR_fadvise64_64 || !defined _syscall6)
extern __typeof(posix_fadvise) posix_fadvise64;
strong_alias(posix_fadvise,posix_fadvise64)