--- a/sim/include/sim.h Thu Feb 14 17:54:13 2013 +0100 +++ a/sim/include/sim.h Tue Mar 05 14:16:09 2013 +0100 @@ -30,4 +30,6 @@ void sim_poll_event (int flag, void *context); +__u64 sim_starttime (void); + #endif /* SIM_H */ --- a/sim/sim.c Thu Feb 14 17:54:13 2013 +0100 +++ a/sim/sim.c Tue Mar 05 14:16:09 2013 +0100 @@ -211,6 +211,18 @@ { return g_imported.current_ns (g_kernel); } +__u64 sim_starttime (void) +{ + static char inited = 0; + static __u64 value = 0; + + if (!inited) + { + value = g_imported.current_ns (0); + inited = 1; + } + return value; +} struct SimTaskTrampolineContext { void (*callback) (void *); --- a/sim/time.c Thu Feb 14 17:54:13 2013 +0100 +++ a/sim/time.c Tue Mar 05 14:16:09 2013 +0100 @@ -57,7 +57,7 @@ ktime_t ktime_get(void) { u64 ns = sim_current_ns (); - return ns_to_ktime (ns); + return ns_to_ktime (ns + sim_starttime ()); } void ktime_get_ts(struct timespec *ts) {