1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 20:27:45 +00:00

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
parent 183ebaee91
commit 32d9534c67
11 changed files with 112 additions and 39 deletions

View file

@ -87,7 +87,8 @@ public:
static void initialize(u8 interrupt_number)
{
new APICIPIInterruptHandler(interrupt_number);
auto* handler = new APICIPIInterruptHandler(interrupt_number);
handler->register_interrupt_handler();
}
virtual void handle_interrupt(const RegisterState&) override;
@ -117,7 +118,8 @@ public:
static void initialize(u8 interrupt_number)
{
new APICErrInterruptHandler(interrupt_number);
auto* handler = new APICErrInterruptHandler(interrupt_number);
handler->register_interrupt_handler();
}
virtual void handle_interrupt(const RegisterState&) override;