diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-09-10 15:08:37 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-09-10 15:08:37 +0200 |
| commit | 3ce0197e99ecea7be66decc2c3c6f785497ef862 (patch) | |
| tree | f92c48ccb09fb4c673ea639b555df039ad13a91e /kernel/kapi/interrupts.cpp | |
| parent | 14ec8e92b45a2eae5bdb3d459cee9633ea129359 (diff) | |
| download | kernel-3ce0197e99ecea7be66decc2c3c6f785497ef862.tar.xz kernel-3ce0197e99ecea7be66decc2c3c6f785497ef862.zip | |
kernel: replace some more plain pointers
Diffstat (limited to 'kernel/kapi/interrupts.cpp')
| -rw-r--r-- | kernel/kapi/interrupts.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/kernel/kapi/interrupts.cpp b/kernel/kapi/interrupts.cpp index c5925058..a1bcba93 100644 --- a/kernel/kapi/interrupts.cpp +++ b/kernel/kapi/interrupts.cpp @@ -14,7 +14,8 @@ namespace kapi::interrupts namespace { - auto constinit handlers = kstd::flat_map<std::uint32_t, kstd::vector<std::pair<handler *, kstd::weak_ptr<void>>>>{}; + auto constinit handlers = + kstd::flat_map<std::uint32_t, kstd::vector<std::pair<kstd::observer_ptr<handler>, kstd::weak_ptr<void>>>>{}; } // namespace auto register_handler(std::uint32_t irq_number, handler & handler, kstd::weak_ptr<void> context) -> void @@ -22,12 +23,12 @@ namespace kapi::interrupts if (handlers.contains(irq_number)) { auto & handler_list = handlers.at(irq_number); - handler_list.push_back(std::pair{&handler, context}); + handler_list.push_back(std::pair{kstd::make_observer(&handler), context}); } else { handlers.emplace(irq_number, kstd::vector{ - std::pair{&handler, context} + std::pair{kstd::make_observer(&handler), context} }); } } @@ -35,8 +36,8 @@ namespace kapi::interrupts auto unregister_handler(std::uint32_t irq_number, handler & handler) -> void { auto & handler_list = handlers.at(irq_number); - auto [first, last] = - std::ranges::remove_if(handler_list, [&](auto const & entry) { return entry.first == &handler; }); + auto [first, last] = std::ranges::remove_if( + handler_list, [&](auto const & entry) { return entry.first == kstd::make_observer(&handler); }); handler_list.erase(first, last); } |
