From ee49caa6d37cb74e48dcd44453f7a032fe00d77d Mon Sep 17 00:00:00 2001 From: apio Date: Wed, 21 Sep 2022 21:03:49 +0200 Subject: [PATCH] Interrupts: ensure is_in_handler is true if we know we are in a handler --- kernel/include/interrupts/Interrupts.h | 1 + kernel/src/interrupts/Interrupts.cpp | 5 +++++ 2 files changed, 6 insertions(+) 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"