From 0b68475b102a9ecc769d1a3493a34055e08c2e7e Mon Sep 17 00:00:00 2001 From: Tony Gutierrez Date: Thu, 4 Aug 2016 12:32:21 -0400 Subject: x86, sim: add some syscalls to X86 this patch adds an implementation for the pwrite64 syscall and enables it for x86_64, and enables fstatfs for x86_64. --- src/sim/syscall_emul.hh | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/sim/syscall_emul.hh') diff --git a/src/sim/syscall_emul.hh b/src/sim/syscall_emul.hh index e9ed130f0..906a01edb 100644 --- a/src/sim/syscall_emul.hh +++ b/src/sim/syscall_emul.hh @@ -1389,6 +1389,28 @@ mmapImpl(SyscallDesc *desc, int num, LiveProcess *p, ThreadContext *tc, return start; } +template +SyscallReturn +pwrite64Func(SyscallDesc *desc, int num, LiveProcess *p, ThreadContext *tc) +{ + int index = 0; + int tgt_fd = p->getSyscallArg(tc, index); + Addr bufPtr = p->getSyscallArg(tc, index); + int nbytes = p->getSyscallArg(tc, index); + int offset = p->getSyscallArg(tc, index); + + int sim_fd = p->getSimFD(tgt_fd); + if (sim_fd < 0) + return -EBADF; + + BufferArg bufArg(bufPtr, nbytes); + bufArg.copyIn(tc->getMemProxy()); + + int bytes_written = pwrite64(sim_fd, bufArg.bufferPtr(), nbytes, offset); + + return (bytes_written == -1) ? -errno : bytes_written; +} + /// Target mmap() handler. template SyscallReturn -- cgit v1.2.3