aboutsummaryrefslogtreecommitdiff
path: root/kernel/kapi/interrupts.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/kapi/interrupts.cpp')
-rw-r--r--kernel/kapi/interrupts.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/kernel/kapi/interrupts.cpp b/kernel/kapi/interrupts.cpp
index 27427bb..e172e70 100644
--- a/kernel/kapi/interrupts.cpp
+++ b/kernel/kapi/interrupts.cpp
@@ -3,6 +3,7 @@
#include <kstd/print>
#include <kstd/vector>
+#include <algorithm>
#include <array>
#include <cstdint>
@@ -22,9 +23,9 @@ namespace kapi::interrupts
auto unregister_handler(std::uint32_t irq_number, handler & handler) -> void
{
- static_cast<void>(irq_number);
- static_cast<void>(handler);
- kstd::println("[OS:interrupts] TODO: support erasure from vector.");
+ auto & handler_list = handlers.at(irq_number);
+ auto [first, last] = std::ranges::remove(handler_list, &handler);
+ handler_list.erase(first, last);
}
auto dispatch(std::uint32_t irq_number) -> status