diff --git a/kernel/include/interrupts/Interrupts.h b/kernel/include/interrupts/Interrupts.h index c87edbf0..883a8527 100644 --- a/kernel/include/interrupts/Interrupts.h +++ b/kernel/include/interrupts/Interrupts.h @@ -7,5 +7,6 @@ namespace Interrupts void disable(); bool is_in_handler(); + void ensure_handler(); void return_from_handler(Context* context); } \ No newline at end of file diff --git a/kernel/src/interrupts/Interrupts.cpp b/kernel/src/interrupts/Interrupts.cpp index e4b72fbb..4ebd98d2 100644 --- a/kernel/src/interrupts/Interrupts.cpp +++ b/kernel/src/interrupts/Interrupts.cpp @@ -16,6 +16,11 @@ bool Interrupts::is_in_handler() return __is_in_interrupt_handler; } +void Interrupts::ensure_handler() +{ + __is_in_interrupt_handler = true; +} + void Interrupts::return_from_handler(Context* context) { asm volatile("mov %0, %%rsp\n"