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

Reply via email to