syscall: Implementation of the times system call

This commit is contained in:
Timothy M. Jones
2009-10-24 10:53:57 -07:00
parent 56154cff5e
commit 6c60db8ce9
2 changed files with 35 additions and 0 deletions

View File

@@ -1131,6 +1131,30 @@ getrusageFunc(SyscallDesc *desc, int callnum, LiveProcess *process,
return 0;
}
/// Target times() function.
template <class OS>
SyscallReturn
timesFunc(SyscallDesc *desc, int callnum, LiveProcess *process,
ThreadContext *tc)
{
TypedBufferArg<typename OS::tms> bufp(process->getSyscallArg(tc, 0));
// Fill in the time structure (in clocks)
int64_t clocks = curTick * OS::_SC_CLK_TCK / Clock::Int::s;
bufp->tms_utime = clocks;
bufp->tms_stime = 0;
bufp->tms_cutime = 0;
bufp->tms_cstime = 0;
// Convert to host endianness
bufp->tms_utime = htog(bufp->tms_utime);
// Write back
bufp.copyOut(tc->getMemPort());
// Return clock ticks since system boot
return clocks;
}