Kernel: Move sleep() implementation to TimerHandler

This commit is contained in:
Bananymous
2023-08-04 15:15:00 +03:00
parent aa0929614a
commit ea4a70c3b3
4 changed files with 13 additions and 18 deletions

View File

@@ -60,14 +60,4 @@ namespace Kernel
return s_system_time;
}
void PIT::sleep(uint64_t ms) const
{
if (ms == 0)
return;
uint64_t wake_time = s_system_time + ms;
Kernel::Scheduler::get().set_current_thread_sleeping(wake_time);
if (s_system_time < wake_time)
dwarnln("sleep woke {} ms too soon", wake_time - s_system_time);
}
}

View File

@@ -1,5 +1,6 @@
#include <kernel/Timer/Timer.h>
#include <kernel/Scheduler.h>
#include <kernel/Timer/PIT.h>
#include <kernel/Timer/Timer.h>
namespace Kernel
{
@@ -35,21 +36,27 @@ namespace Kernel
dwarnln("PIT: {}", res.error());
else
{
MUST(m_timers.emplace_back(BAN::move(res.release_value())));
m_timer = res.release_value();
dprintln("PIT initialized");
return;
}
ASSERT(!m_timers.empty());
Kernel::panic("Could not initialize any timer");
}
uint64_t TimerHandler::ms_since_boot() const
{
return m_timers.front()->ms_since_boot();
return m_timer->ms_since_boot();
}
void TimerHandler::sleep(uint64_t ms) const
{
return m_timers.front()->sleep(ms);
if (ms == 0)
return;
uint64_t wake_time = ms_since_boot() + ms;
Scheduler::get().set_current_thread_sleeping(wake_time);
if (ms_since_boot() < wake_time)
dwarnln("sleep woke {} ms too soon", wake_time - ms_since_boot());
}
uint64_t TimerHandler::get_unix_timestamp()