From c5384366b6e5fa487e0a25db6c539b5a9d54ca7b Mon Sep 17 00:00:00 2001 From: Steve Reinhardt Date: Mon, 28 Aug 2006 07:39:56 -0700 Subject: Add dup() support (from Antti Miettinen). --HG-- extra : convert_revision : 72c834666afa3c353da026617ad5e7a762eb645f --- src/sim/syscall_emul.cc | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/sim/syscall_emul.cc') diff --git a/src/sim/syscall_emul.cc b/src/sim/syscall_emul.cc index e72890612..cf90d8f84 100644 --- a/src/sim/syscall_emul.cc +++ b/src/sim/syscall_emul.cc @@ -300,6 +300,19 @@ fchownFunc(SyscallDesc *desc, int num, Process *process, ThreadContext *tc) } +SyscallReturn +dupFunc(SyscallDesc *desc, int num, Process *process, ThreadContext *tc) +{ + int fd = process->sim_fd(tc->getSyscallArg(0)); + + if (fd < 0) + return -EBADF; + + int result = dup(fd); + return (result == -1) ? -errno : process->alloc_fd(result); +} + + SyscallReturn fcntlFunc(SyscallDesc *desc, int num, Process *process, ThreadContext *tc) -- cgit v1.2.3