From 793cca423b9c04ef425702cf605057544b0d0bfd Mon Sep 17 00:00:00 2001 From: Bananymous Date: Wed, 16 Jul 2025 20:02:04 +0300 Subject: [PATCH] Kernel: Fix system timer disabling I was actually not disabling system timer (HPET, PIT) when using lapic timers for scheduling. This made BSB get too many timer interrupts :D --- kernel/include/kernel/Timer/Timer.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/kernel/include/kernel/Timer/Timer.h b/kernel/include/kernel/Timer/Timer.h index e292ed12..f30523b6 100644 --- a/kernel/include/kernel/Timer/Timer.h +++ b/kernel/include/kernel/Timer/Timer.h @@ -20,13 +20,12 @@ namespace Kernel virtual bool pre_scheduler_sleep_needs_lock() const = 0; virtual void pre_scheduler_sleep_ns(uint64_t) = 0; - void dont_invoke_scheduler() { m_should_invoke_scheduler = false; } - protected: bool should_invoke_scheduler() const { return m_should_invoke_scheduler; } private: bool m_should_invoke_scheduler { true }; + friend class SystemTimer; }; class SystemTimer : public Timer @@ -46,6 +45,8 @@ namespace Kernel void sleep_ms(uint64_t ms) const { ASSERT(!BAN::Math::will_multiplication_overflow(ms, 1'000'000)); return sleep_ns(ms * 1'000'000); } void sleep_ns(uint64_t ns) const; + void dont_invoke_scheduler() { m_timer->m_should_invoke_scheduler = false; } + timespec real_time() const; private: