I saw a similar patch (for a time-syscall) from a Timothy Jones (?) on the list-serv ....
Is this the same thing? Did anyone import Timothy's patches into their queue? On Tue, Sep 22, 2009 at 12:20 AM, Vince Weaver <[email protected]>wrote: > > This implements the time syscall. It should probably somehow > flush the changed value back out to the memory subsystem, I wasn't sure > how to do that when it's an int (and not a structure) being written out. > > > diff -r 1cc467793e1c src/arch/x86/linux/linux.hh > --- a/src/arch/x86/linux/linux.hh Mon Sep 21 23:16:48 2009 -0400 > +++ b/src/arch/x86/linux/linux.hh Mon Sep 21 23:37:15 2009 -0400 > @@ -127,6 +127,8 @@ > uint64_t mem_unit; /* Memory unit size in bytes */ > } tgt_sysinfo; > > + typedef uint64_t timet; > + > }; > > class X86Linux32 : public Linux > @@ -191,6 +193,9 @@ > uint32_t freehigh; /* Available high memory size */ > uint32_t mem_unit; /* Memory unit size in bytes */ > } tgt_sysinfo; > + > + typedef uint32_t timet; > + > }; > > #endif > diff -r 1cc467793e1c src/arch/x86/linux/syscalls.cc > --- a/src/arch/x86/linux/syscalls.cc Mon Sep 21 23:16:48 2009 -0400 > +++ b/src/arch/x86/linux/syscalls.cc Mon Sep 21 23:37:15 2009 -0400 > @@ -429,7 +429,7 @@ > /* 198 */ SyscallDesc("lremovexattr", unimplementedFunc), > /* 199 */ SyscallDesc("fremovexattr", unimplementedFunc), > /* 200 */ SyscallDesc("tkill", unimplementedFunc), > - /* 201 */ SyscallDesc("time", unimplementedFunc), > + /* 201 */ SyscallDesc("time", timeFunc<X86Linux64>), > /* 202 */ SyscallDesc("futex", ignoreFunc), > /* 203 */ SyscallDesc("sched_setaffinity", unimplementedFunc), > /* 204 */ SyscallDesc("sched_getaffinity", unimplementedFunc), > @@ -520,7 +520,7 @@ > /* 10 */ SyscallDesc("unlink", unimplementedFunc), > /* 11 */ SyscallDesc("execve", unimplementedFunc), > /* 12 */ SyscallDesc("chdir", unimplementedFunc), > - /* 13 */ SyscallDesc("time", unimplementedFunc), > + /* 13 */ SyscallDesc("time", timeFunc<X86Linux32>), > /* 14 */ SyscallDesc("mknod", unimplementedFunc), > /* 15 */ SyscallDesc("chmod", unimplementedFunc), > /* 16 */ SyscallDesc("lchown", unimplementedFunc), > diff -r 1cc467793e1c src/sim/syscall_emul.hh > --- a/src/sim/syscall_emul.hh Mon Sep 21 23:16:48 2009 -0400 > +++ b/src/sim/syscall_emul.hh Mon Sep 21 23:37:15 2009 -0400 > @@ -1034,6 +1034,24 @@ > return 0; > } > > +/// Target time() handler. > +template <class OS> > +SyscallReturn > +timeFunc(SyscallDesc *desc, int callnum, LiveProcess *process, > + ThreadContext *tc) > +{ > + TypedBufferArg<typename OS::timet> tp(process->getSyscallArg(tc, 0)); > + > + struct timeval hostTimeval; > + getElapsedTime(hostTimeval.tv_sec, hostTimeval.tv_usec); > + > + if (tp!=NULL) { > + *tp=seconds_since_epoch+hostTimeval.tv_sec; > + } > + return seconds_since_epoch+hostTimeval.tv_sec; > + > +} > + > > /// Target utimes() handler. > template <class OS> > _______________________________________________ > m5-dev mailing list > [email protected] > http://m5sim.org/mailman/listinfo/m5-dev > -- - Korey
_______________________________________________ m5-dev mailing list [email protected] http://m5sim.org/mailman/listinfo/m5-dev
