diff --git a/Kernel/Time/HardwareTimer.cpp b/Kernel/Time/HardwareTimer.cpp index 654f4bcf06..382bed2cdb 100644 --- a/Kernel/Time/HardwareTimer.cpp +++ b/Kernel/Time/HardwareTimer.cpp @@ -31,23 +31,26 @@ namespace Kernel { HardwareTimer::HardwareTimer(u8 irq_number, Function callback) : IRQHandler(irq_number) - , m_function_to_call(move(callback)) + , m_callback(move(callback)) { } + void HardwareTimer::handle_irq(const RegisterState& regs) { - m_function_to_call(regs); + m_callback(regs); } + const char* HardwareTimer::purpose() const { if (TimeManagement::the().is_system_timer(*this)) return "System Timer"; return model(); } + void HardwareTimer::change_function(Function callback) { disable_irq(); - m_function_to_call = move(callback); + m_callback = move(callback); enable_irq(); } diff --git a/Kernel/Time/HardwareTimer.h b/Kernel/Time/HardwareTimer.h index 3d8493afb6..a7cef603ee 100644 --- a/Kernel/Time/HardwareTimer.h +++ b/Kernel/Time/HardwareTimer.h @@ -40,7 +40,8 @@ enum class HardwareTimerType { HighPrecisionEventTimer = 0x3 /* also known as IA-PC HPET */ }; -class HardwareTimer : public RefCounted +class HardwareTimer + : public RefCounted , public IRQHandler { public: virtual HardwareTimerType timer_type() const = 0; @@ -67,6 +68,7 @@ protected: u64 m_frequency { OPTIMAL_TICKS_PER_SECOND_RATE }; private: - Function m_function_to_call; + Function m_callback; }; + }