[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 6/7] linux-user: fadvise64 implementation
From: |
Ulrich Hecht |
Subject: |
[Qemu-devel] [PATCH 6/7] linux-user: fadvise64 implementation |
Date: |
Fri, 24 Jul 2009 19:10:31 +0200 |
good enough to pass all LTP fadvise64 tests
Signed-off-by: Ulrich Hecht <address@hidden>
---
linux-user/syscall.c | 17 ++++++++++++++---
1 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 6417cbb..2dc86ff 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -6651,12 +6651,23 @@ abi_long do_syscall(void *cpu_env, int num, abi_long
arg1,
arg4 = temp;
}
#endif
-#if defined(TARGET_NR_fadvise64_64) || defined(TARGET_NR_arm_fadvise64_64)
+#if defined(TARGET_NR_fadvise64_64) || defined(TARGET_NR_arm_fadvise64_64) ||
defined(TARGET_NR_fadvise64)
#ifdef TARGET_NR_fadvise64_64
case TARGET_NR_fadvise64_64:
#endif
- /* This is a hint, so ignoring and returning success is ok. */
- ret = get_errno(0);
+#ifdef TARGET_NR_fadvise64
+ case TARGET_NR_fadvise64:
+#endif
+#ifdef TARGET_S390X
+ switch (arg4) {
+ case 4: arg4 = POSIX_FADV_NOREUSE + 1; break; /* make sure it's an
invalid value */
+ case 5: arg4 = POSIX_FADV_NOREUSE + 2; break; /* ditto */
+ case 6: arg4 = POSIX_FADV_DONTNEED; break;
+ case 7: arg4 = POSIX_FADV_NOREUSE; break;
+ default: break;
+ }
+#endif
+ ret = -posix_fadvise(arg1, arg2, arg3, arg4);
break;
#endif
#ifdef TARGET_NR_madvise
--
1.6.2.1
Re: [Qemu-devel] [PATCH 1/7] linux-user: dup3, fallocate syscalls, Jan-Simon Möller, 2009/07/25