qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 09/11] linux-user: fadvise64 implementation


From: riku . voipio
Subject: [Qemu-devel] [PATCH 09/11] linux-user: fadvise64 implementation
Date: Thu, 13 Aug 2009 23:06:22 +0300

From: Ulrich Hecht <address@hidden>

good enough to pass all LTP fadvise64 tests

Signed-off-by: Ulrich Hecht <address@hidden>
Signed-off-by: Riku Voipio <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 58c1b29..f90be71 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -6649,12 +6649,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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]