syscall_emul: Implement clock_getres() system call
This patch implements the clock_getres() system call for arm and x86 in linux SE mode.
This commit is contained in:
parent
c6cede244b
commit
8d923c7380
3 changed files with 19 additions and 2 deletions
|
@ -383,7 +383,7 @@ static SyscallDesc syscallDescs32[] = {
|
|||
/* 261 */ SyscallDesc("timer_delete", unimplementedFunc),
|
||||
/* 262 */ SyscallDesc("clock_settime", unimplementedFunc),
|
||||
/* 263 */ SyscallDesc("clock_gettime", clock_gettimeFunc<ArmLinux32>),
|
||||
/* 264 */ SyscallDesc("clock_getres", unimplementedFunc),
|
||||
/* 264 */ SyscallDesc("clock_getres", clock_getresFunc<ArmLinux32>),
|
||||
/* 265 */ SyscallDesc("clock_nanosleep", unimplementedFunc),
|
||||
/* 266 */ SyscallDesc("statfs64", unimplementedFunc),
|
||||
/* 267 */ SyscallDesc("fstatfs64", unimplementedFunc),
|
||||
|
|
|
@ -447,7 +447,7 @@ static SyscallDesc syscallDescs64[] = {
|
|||
/* 226 */ SyscallDesc("timer_delete", unimplementedFunc),
|
||||
/* 227 */ SyscallDesc("clock_settime", unimplementedFunc),
|
||||
/* 228 */ SyscallDesc("clock_gettime", clock_gettimeFunc<X86Linux64>),
|
||||
/* 229 */ SyscallDesc("clock_getres", unimplementedFunc),
|
||||
/* 229 */ SyscallDesc("clock_getres", clock_getresFunc<X86Linux64>),
|
||||
/* 230 */ SyscallDesc("clock_nanosleep", unimplementedFunc),
|
||||
/* 231 */ SyscallDesc("exit_group", exitGroupFunc),
|
||||
/* 232 */ SyscallDesc("epoll_wait", unimplementedFunc),
|
||||
|
|
|
@ -1357,6 +1357,23 @@ clock_gettimeFunc(SyscallDesc *desc, int num, LiveProcess *p, ThreadContext *tc)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/// Target clock_getres() function.
|
||||
template <class OS>
|
||||
SyscallReturn
|
||||
clock_getresFunc(SyscallDesc *desc, int num, LiveProcess *p, ThreadContext *tc)
|
||||
{
|
||||
int index = 1;
|
||||
TypedBufferArg<typename OS::timespec> tp(p->getSyscallArg(tc, index));
|
||||
|
||||
// Set resolution at ns, which is what clock_gettime() returns
|
||||
tp->tv_sec = 0;
|
||||
tp->tv_nsec = 1;
|
||||
|
||||
tp.copyOut(tc->getMemProxy());
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// Target gettimeofday() handler.
|
||||
template <class OS>
|
||||
SyscallReturn
|
||||
|
|
Loading…
Reference in a new issue