Kernel: Fix GenericInterruptHandler problems with virtual functions

Because registering and unregistering interrupt handlers triggers
calls to virtual functions, we can't do this in the constructor
and destructor.

Fixes #5539
This commit is contained in:
Tom 2021-02-26 17:17:57 -07:00 committed by Andreas Kling
commit 32d9534c67
Notes: sideshowbarker 2024-07-18 21:52:06 +09:00
11 changed files with 112 additions and 39 deletions

View file

@ -56,6 +56,8 @@ bool IRQHandler::eoi()
void IRQHandler::enable_irq()
{
dbgln_if(IRQ_DEBUG, "Enable IRQ {}", interrupt_number());
if (!is_registered())
register_interrupt_handler();
m_enabled = true;
if (!m_shared_with_others)
m_responsible_irq_controller->enable(*this);