I did send in a patch for this syscall, yes. I used writeBlob to send the value back to memory.
Incidentally, I saw Vince needed ftruncate64 to be implemented. I also sent in a patch for that too. Do you want me to do anything with those patches or can they just be added as they are (do I do that - if so how?) Cheers Tim On Tue, 22 Sep 2009 15:57:01 +0100, Korey Sewell <[email protected]> wrote: > 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 >> > > > -- The University of Edinburgh is a charitable body, registered in Scotland, with registration number SC005336. _______________________________________________ m5-dev mailing list [email protected] http://m5sim.org/mailman/listinfo/m5-dev
