1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 19:37:35 +00:00

Kernel+lsirq: Track per-CPU IRQ handler call counts

Each GenericInterruptHandler now tracks the number of calls that each
CPU has serviced.

This takes care of a FIXME in the /sys/kernel/interrupts generator.

Also, the lsirq command line tool now displays per-CPU call counts.
This commit is contained in:
Andreas Kling 2022-11-18 22:07:57 +01:00
parent 94b514b981
commit fb00d3ed25
4 changed files with 33 additions and 9 deletions

View file

@ -37,7 +37,7 @@ public:
u8 interrupt_number() const { return m_interrupt_number; }
u32 call_count() const { return m_call_count; }
Span<u32 const> per_cpu_call_counts() const;
virtual size_t sharing_devices_count() const = 0;
virtual bool is_shared_handler() const = 0;
@ -57,7 +57,8 @@ protected:
void disable_remap() { m_disable_remap = true; }
private:
Atomic<u32, AK::MemoryOrder::memory_order_relaxed> m_call_count { 0 };
Array<u32, MAX_CPU_COUNT> m_per_cpu_call_counts {};
u8 m_interrupt_number { 0 };
bool m_disable_remap { false };
bool m_registered { false };