aboutsummaryrefslogtreecommitdiff
path: root/kernel/kapi
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2026-03-26 18:40:39 +0100
committerFelix Morgner <felix.morgner@ost.ch>2026-03-27 07:02:35 +0100
commit11c6d57e013832983bcd9bb965d470bf4c282ab6 (patch)
treebf3f90a81b4240d04d96c72503268c2d9171772b /kernel/kapi
parent096d7505cfc2d60e58a6dd4d80fd7f3638c9bb94 (diff)
downloadteachos-11c6d57e013832983bcd9bb965d470bf4c282ab6.tar.xz
teachos-11c6d57e013832983bcd9bb965d470bf4c282ab6.zip
kstd/vector: implement range erase
Diffstat (limited to 'kernel/kapi')
-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