* kern/mach_clock.c (monotonic, mmonotonic): New variables. (clock_interrupt): Call `time_value_add_usec' also on `monotonic', and `update_mapped_time' also for `mmonotonic'. (mapable_time_init): Call `mapable_time_init_time' also `monotonic' and `mmonotonic'. --- kern/mach_clock.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/kern/mach_clock.c b/kern/mach_clock.c index 459a290..1e3b88e 100644 --- a/kern/mach_clock.c +++ b/kern/mach_clock.c @@ -71,6 +71,7 @@ void mapable_time_init_time(); /* forward */ int hz = HZ; /* number of ticks per second */ int tick = (1000000 / HZ); /* number of usec per tick */ time_value_t time = { 0, 0 }; /* time since bootup (uncorrected) */ +time_value_t monotonic = { 0, 0 }; /* time since bootup (uncorrected) */ unsigned long elapsed_ticks = 0; /* ticks elapsed since bootup */ int timedelta = 0; @@ -96,6 +97,7 @@ int bigadj = 1000000; /* adjust 10*tickadj if adjustment */ mapped_time_value_t *mtime = 0; +mapped_time_value_t *mmonotonic = 0; #define update_mapped_time(time, mtime) \ MACRO_BEGIN \ @@ -221,6 +223,7 @@ void clock_interrupt(usec, usermode, basepri) */ if (timedelta == 0) { time_value_add_usec(&time, usec); + time_value_add_usec(&monotonic, usec); } else { register int delta; @@ -234,8 +237,10 @@ void clock_interrupt(usec, usermode, basepri) timedelta -= tickdelta; } time_value_add_usec(&time, delta); + time_value_add_usec(&monotonic, delta); } update_mapped_time(&time, mtime); + update_mapped_time(&monotonic, mmonotonic); /* * Schedule soft-interupt for timeout if needed @@ -497,6 +502,7 @@ host_adjust_time(host, new_adjustment, old_adjustment) void mapable_time_init() { mapable_time_init_time(&time, &mtime, "mapable_time_init_mtime"); + mapable_time_init_time(&monotonic, &mmonotonic, "mapable_time_init_mmonotonic"); } void mapable_time_init_time(time_v, mapped_time_v, what) -- 1.7.5.4