diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-03-26 18:40:39 +0100 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-03-27 07:02:35 +0100 |
| commit | 11c6d57e013832983bcd9bb965d470bf4c282ab6 (patch) | |
| tree | bf3f90a81b4240d04d96c72503268c2d9171772b /kernel/kapi | |
| parent | 096d7505cfc2d60e58a6dd4d80fd7f3638c9bb94 (diff) | |
| download | teachos-11c6d57e013832983bcd9bb965d470bf4c282ab6.tar.xz teachos-11c6d57e013832983bcd9bb965d470bf4c282ab6.zip | |
kstd/vector: implement range erase
Diffstat (limited to 'kernel/kapi')
| -rw-r--r-- | kernel/kapi/interrupts.cpp | 7 |
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 |
