syscall_emul: implement fallocate
This commit is contained in:
parent
68e9c0e73b
commit
cc84eb813c
|
@ -503,7 +503,7 @@ static SyscallDesc syscallDescs64[] = {
|
|||
/* 282 */ SyscallDesc("signalfd", unimplementedFunc),
|
||||
/* 283 */ SyscallDesc("timerfd_create", unimplementedFunc),
|
||||
/* 284 */ SyscallDesc("eventfd", unimplementedFunc),
|
||||
/* 285 */ SyscallDesc("fallocate", unimplementedFunc),
|
||||
/* 285 */ SyscallDesc("fallocate", fallocateFunc),
|
||||
/* 286 */ SyscallDesc("timerfd_settime", unimplementedFunc),
|
||||
/* 287 */ SyscallDesc("timerfd_gettime", unimplementedFunc),
|
||||
/* 288 */ SyscallDesc("accept4", unimplementedFunc),
|
||||
|
|
|
@ -934,6 +934,27 @@ cloneFunc(SyscallDesc *desc, int callnum, LiveProcess *process,
|
|||
}
|
||||
}
|
||||
|
||||
SyscallReturn
|
||||
fallocateFunc(SyscallDesc *desc, int callnum, LiveProcess *process,
|
||||
ThreadContext *tc)
|
||||
{
|
||||
int index = 0;
|
||||
int tgt_fd = process->getSyscallArg(tc, index);
|
||||
int mode = process->getSyscallArg(tc, index);
|
||||
off_t offset = process->getSyscallArg(tc, index);
|
||||
off_t len = process->getSyscallArg(tc, index);
|
||||
|
||||
int sim_fd = process->getSimFD(tgt_fd);
|
||||
if (sim_fd < 0)
|
||||
return -EBADF;
|
||||
|
||||
int result = fallocate(sim_fd, mode, offset, len);
|
||||
if (result < 0)
|
||||
return -errno;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
SyscallReturn
|
||||
accessFunc(SyscallDesc *desc, int callnum, LiveProcess *p, ThreadContext *tc,
|
||||
int index)
|
||||
|
|
|
@ -157,6 +157,10 @@ SyscallReturn unimplementedFunc(SyscallDesc *desc, int num,
|
|||
SyscallReturn ignoreFunc(SyscallDesc *desc, int num,
|
||||
LiveProcess *p, ThreadContext *tc);
|
||||
|
||||
// Target fallocateFunc() handler.
|
||||
SyscallReturn fallocateFunc(SyscallDesc *desc, int num,
|
||||
LiveProcess *p, ThreadContext *tc);
|
||||
|
||||
/// Target exit() handler: terminate current context.
|
||||
SyscallReturn exitFunc(SyscallDesc *desc, int num,
|
||||
LiveProcess *p, ThreadContext *tc);
|
||||
|
|
Loading…
Reference in a new issue