From b035267afaaf72601e8a3e7afba437de340c786d Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 16 Apr 2020 18:20:27 +0200 Subject: [PATCH] Kernel: Remove "stale callback" concept from time management If a hardware timer doesn't have a callback registered, it's now simply represented by a null m_callback. --- Kernel/Time/HPETComparator.cpp | 6 +++--- Kernel/Time/HPETComparator.h | 2 +- Kernel/Time/HardwareTimer.cpp | 3 ++- Kernel/Time/HardwareTimer.h | 2 +- Kernel/Time/TimeManagement.cpp | 4 ---- Kernel/Time/TimeManagement.h | 1 - 6 files changed, 7 insertions(+), 11 deletions(-) diff --git a/Kernel/Time/HPETComparator.cpp b/Kernel/Time/HPETComparator.cpp index f70f3a96a4..b2e68ce583 100644 --- a/Kernel/Time/HPETComparator.cpp +++ b/Kernel/Time/HPETComparator.cpp @@ -34,11 +34,11 @@ namespace Kernel { NonnullRefPtr HPETComparator::create(u8 number, u8 irq, bool periodic_capable) { - return adopt(*new HPETComparator(number, irq, periodic_capable, [](const RegisterState& regs) { TimeManagement::stale_function(regs); })); + return adopt(*new HPETComparator(number, irq, periodic_capable)); } -HPETComparator::HPETComparator(u8 number, u8 irq, bool periodic_capable, Function callback) - : HardwareTimer(irq, move(callback)) +HPETComparator::HPETComparator(u8 number, u8 irq, bool periodic_capable) + : HardwareTimer(irq) , m_periodic(false) , m_periodic_capable(periodic_capable) , m_comparator_number(number) diff --git a/Kernel/Time/HPETComparator.h b/Kernel/Time/HPETComparator.h index d6b17fce66..86debaac2d 100644 --- a/Kernel/Time/HPETComparator.h +++ b/Kernel/Time/HPETComparator.h @@ -58,7 +58,7 @@ public: private: void set_new_countdown(); virtual void handle_irq(const RegisterState&) override; - HPETComparator(u8 number, u8 irq, bool periodic_capable, Function callback); + HPETComparator(u8 number, u8 irq, bool periodic_capable); bool m_periodic : 1; bool m_periodic_capable : 1; bool m_edge_triggered : 1; diff --git a/Kernel/Time/HardwareTimer.cpp b/Kernel/Time/HardwareTimer.cpp index 382bed2cdb..174179c8ef 100644 --- a/Kernel/Time/HardwareTimer.cpp +++ b/Kernel/Time/HardwareTimer.cpp @@ -37,7 +37,8 @@ HardwareTimer::HardwareTimer(u8 irq_number, Function void HardwareTimer::handle_irq(const RegisterState& regs) { - m_callback(regs); + if (!m_callback) + m_callback(regs); } const char* HardwareTimer::purpose() const diff --git a/Kernel/Time/HardwareTimer.h b/Kernel/Time/HardwareTimer.h index a7cef603ee..2afb3ca1f8 100644 --- a/Kernel/Time/HardwareTimer.h +++ b/Kernel/Time/HardwareTimer.h @@ -62,7 +62,7 @@ public: virtual size_t calculate_nearest_possible_frequency(size_t frequency) const = 0; protected: - HardwareTimer(u8 irq_number, Function); + HardwareTimer(u8 irq_number, Function = nullptr); //^IRQHandler virtual void handle_irq(const RegisterState&) override; u64 m_frequency { OPTIMAL_TICKS_PER_SECOND_RATE }; diff --git a/Kernel/Time/TimeManagement.cpp b/Kernel/Time/TimeManagement.cpp index 8b3830871e..a4e1137900 100644 --- a/Kernel/Time/TimeManagement.cpp +++ b/Kernel/Time/TimeManagement.cpp @@ -90,10 +90,6 @@ time_t TimeManagement::boot_time() const return RTC::boot_time(); } -void TimeManagement::stale_function(const RegisterState&) -{ -} - TimeManagement::TimeManagement(bool probe_non_legacy_hardware_timers) { if (ACPI::is_enabled()) { diff --git a/Kernel/Time/TimeManagement.h b/Kernel/Time/TimeManagement.h index 219eefac0b..306ac85c12 100644 --- a/Kernel/Time/TimeManagement.h +++ b/Kernel/Time/TimeManagement.h @@ -57,7 +57,6 @@ public: static void update_time(const RegisterState&); void increment_time_since_boot(const RegisterState&); - static void stale_function(const RegisterState&); static bool is_hpet_periodic_mode_allowed(); private: