diff --git a/Kernel/Scheduler.cpp b/Kernel/Scheduler.cpp index 1523caf0dc7..bd630ee4cfc 100644 --- a/Kernel/Scheduler.cpp +++ b/Kernel/Scheduler.cpp @@ -597,8 +597,7 @@ void Scheduler::timer_tick(const RegisterState& regs) ++g_uptime; - g_timeofday.tv_sec = TimeManagement::the().epoch_time(); - g_timeofday.tv_usec = TimeManagement::the().ticks_this_second() * 1000; + g_timeofday = TimeManagement::now_as_timeval(); if (Process::current->is_profiling()) { SmapDisabler disabler; diff --git a/Kernel/Time/TimeManagement.cpp b/Kernel/Time/TimeManagement.cpp index afafd24fd11..d97cf26c466 100644 --- a/Kernel/Time/TimeManagement.cpp +++ b/Kernel/Time/TimeManagement.cpp @@ -115,6 +115,11 @@ TimeManagement::TimeManagement(bool probe_non_legacy_hardware_timers) ASSERT_NOT_REACHED(); } +timeval TimeManagement::now_as_timeval() +{ + return { s_time_management->epoch_time(), (suseconds_t)s_time_management->ticks_this_second() * (suseconds_t)1000 }; +} + Vector TimeManagement::scan_and_initialize_periodic_timers() { bool should_enable = is_hpet_periodic_mode_allowed(); diff --git a/Kernel/Time/TimeManagement.h b/Kernel/Time/TimeManagement.h index 7571295424f..c09159cc6ce 100644 --- a/Kernel/Time/TimeManagement.h +++ b/Kernel/Time/TimeManagement.h @@ -60,6 +60,8 @@ public: static bool is_hpet_periodic_mode_allowed(); + static timeval now_as_timeval(); + private: explicit TimeManagement(bool probe_non_legacy_hardware_timers); bool probe_and_set_legacy_hardware_timers();