1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 19:38:12 +00:00

Kernel: Take into account the time keeper's frequency (if no HPET)

The PIT is now also running at a rate of ~250 ticks/second, so rather
than assuming there are 1000 ticks/second we need to query the timer
being used for the actual frequency.

Fixes #4508
This commit is contained in:
Tom 2020-12-26 17:09:54 -07:00 committed by Andreas Kling
parent 0e2b7f9c9a
commit f1534ff36e
2 changed files with 7 additions and 3 deletions

View file

@ -58,6 +58,7 @@ public:
virtual void set_periodic() = 0;
virtual void set_non_periodic() = 0;
virtual void disable() = 0;
virtual u32 frequency() const = 0;
virtual size_t ticks_per_second() const = 0;
@ -88,6 +89,8 @@ public:
return previous_callback;
}
virtual u32 frequency() const override { return (u32)m_frequency; }
protected:
HardwareTimer(u8 irq_number, Function<void(const RegisterState&)> callback = nullptr)
: IRQHandler(irq_number)
@ -131,6 +134,8 @@ public:
virtual const char* controller() const override { return nullptr; }
virtual bool eoi() override;
virtual u32 frequency() const override { return (u32)m_frequency; }
protected:
HardwareTimer(u8 irq_number, Function<void(const RegisterState&)> callback = nullptr)
: GenericInterruptHandler(irq_number)