changeset af13eb1b7f81 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=af13eb1b7f81
description:
        syscall: Implementation of the ftruncate64 system call.

diffstat:

2 files changed, 21 insertions(+)
src/sim/syscall_emul.cc |   16 ++++++++++++++++
src/sim/syscall_emul.hh |    5 +++++

diffs (41 lines):

diff -r 04cba5a03e2e -r af13eb1b7f81 src/sim/syscall_emul.cc
--- a/src/sim/syscall_emul.cc   Sat Oct 24 10:53:57 2009 -0700
+++ b/src/sim/syscall_emul.cc   Sat Oct 24 10:53:58 2009 -0700
@@ -405,6 +405,22 @@
 }
 
 SyscallReturn
+ftruncate64Func(SyscallDesc *desc, int num,
+                LiveProcess *process, ThreadContext *tc)
+{
+    int fd = process->sim_fd(process->getSyscallArg(tc, 0));
+
+    if (fd < 0)
+        return -EBADF;
+
+    // I'm not sure why, but the length argument is in arg reg 3
+    loff_t length = process->getSyscallArg(tc, 3);
+
+    int result = ftruncate64(fd, length);
+    return (result == -1) ? -errno : result;
+}
+
+SyscallReturn
 umaskFunc(SyscallDesc *desc, int num, LiveProcess *process, ThreadContext *tc)
 {
     // Letting the simulated program change the simulator's umask seems like
diff -r 04cba5a03e2e -r af13eb1b7f81 src/sim/syscall_emul.hh
--- a/src/sim/syscall_emul.hh   Sat Oct 24 10:53:57 2009 -0700
+++ b/src/sim/syscall_emul.hh   Sat Oct 24 10:53:58 2009 -0700
@@ -260,6 +260,11 @@
                             LiveProcess *p, ThreadContext *tc);
 
 
+/// Target ftruncate64() handler.
+SyscallReturn ftruncate64Func(SyscallDesc *desc, int num,
+                              LiveProcess *p, ThreadContext *tc);
+
+
 /// Target umask() handler.
 SyscallReturn umaskFunc(SyscallDesc *desc, int num,
                         LiveProcess *p, ThreadContext *tc);
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to