add fcntl64Func
use ThreadContext rename
src/arch/mips/isa/formats/branch.isa:
src/arch/mips/isa/formats/fp.isa:
src/arch/mips/isa/includes.isa:
Use ThreadContext
src/sim/syscall_emul.cc:
fcntl64 function using TC
src/sim/syscall_emul.hh:
Add fcntl64func
--HG--
extra : convert_revision : b5e2348530473704388b1c5a2b59bf78360260a9
This commit is contained in:
@@ -340,6 +340,35 @@ fcntlFunc(SyscallDesc *desc, int num, Process *process,
|
||||
}
|
||||
}
|
||||
|
||||
SyscallReturn
|
||||
fcntl64Func(SyscallDesc *desc, int num, Process *process,
|
||||
ThreadContext *tc)
|
||||
{
|
||||
int fd = tc->getSyscallArg(0);
|
||||
|
||||
if (fd < 0 || process->sim_fd(fd) < 0)
|
||||
return -EBADF;
|
||||
|
||||
int cmd = tc->getSyscallArg(1);
|
||||
switch (cmd) {
|
||||
case 33: //F_GETLK64
|
||||
warn("fcntl64(%d, F_GETLK64) not supported, error returned\n", fd);
|
||||
return -EMFILE;
|
||||
|
||||
case 34: // F_SETLK64
|
||||
case 35: // F_SETLKW64
|
||||
warn("fcntl64(%d, F_SETLK(W)64) not supported, error returned\n", fd);
|
||||
return -EMFILE;
|
||||
|
||||
default:
|
||||
// not sure if this is totally valid, but we'll pass it through
|
||||
// to the underlying OS
|
||||
warn("fcntl64(%d, %d) passed through to host\n", fd, cmd);
|
||||
return fcntl(process->sim_fd(fd), cmd);
|
||||
// return 0;
|
||||
}
|
||||
}
|
||||
|
||||
SyscallReturn
|
||||
pipePseudoFunc(SyscallDesc *desc, int callnum, Process *process,
|
||||
ThreadContext *tc)
|
||||
|
||||
@@ -249,6 +249,10 @@ SyscallReturn fchownFunc(SyscallDesc *desc, int num,
|
||||
SyscallReturn fcntlFunc(SyscallDesc *desc, int num,
|
||||
Process *process, ThreadContext *tc);
|
||||
|
||||
/// Target fcntl64() handler.
|
||||
SyscallReturn fcntl64Func(SyscallDesc *desc, int num,
|
||||
Process *process, ThreadContext *tc);
|
||||
|
||||
/// Target setuid() handler.
|
||||
SyscallReturn setuidFunc(SyscallDesc *desc, int num,
|
||||
Process *p, ThreadContext *tc);
|
||||
|
||||
Reference in New Issue
Block a user