aboutsummaryrefslogtreecommitdiff
path: root/kernel/kapi
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/kapi')
-rw-r--r--kernel/kapi/devices/facet_registry.cpp8
-rw-r--r--kernel/kapi/interrupts.cpp11
-rw-r--r--kernel/kapi/memory.cpp8
3 files changed, 14 insertions, 13 deletions
diff --git a/kernel/kapi/devices/facet_registry.cpp b/kernel/kapi/devices/facet_registry.cpp
index f2f5d03b..a988a6a4 100644
--- a/kernel/kapi/devices/facet_registry.cpp
+++ b/kernel/kapi/devices/facet_registry.cpp
@@ -79,7 +79,7 @@ namespace kapi::devices
auto facet_registry::do_notify_published(kapi::capabilities::facet_id id, entry const & published) -> void
{
auto observers = kstd::vector<kstd::weak_ptr<facet_registry_observer>>{};
- auto static_observers = kstd::vector<facet_registry_observer *>{};
+ auto static_observers = kstd::vector<kstd::observer_ptr<facet_registry_observer>>{};
{
auto guard = kstd::lock_guard{m_lock};
observers = m_observers;
@@ -99,7 +99,7 @@ namespace kapi::devices
auto facet_registry::do_notify_withdrawn(kapi::capabilities::facet_id id, device const & device) -> void
{
auto observers = kstd::vector<kstd::weak_ptr<facet_registry_observer>>{};
- auto static_observers = kstd::vector<facet_registry_observer *>{};
+ auto static_observers = kstd::vector<kstd::observer_ptr<facet_registry_observer>>{};
{
auto guard = kstd::lock_guard{m_lock};
observers = m_observers;
@@ -227,7 +227,7 @@ namespace kapi::devices
{
auto guard = kstd::lock_guard{m_lock};
- m_static_observers.push_back(&observer);
+ m_static_observers.push_back(kstd::make_observer(&observer));
}
auto facet_registry::unsubscribe(facet_registry_observer & observer) -> void
@@ -235,7 +235,7 @@ namespace kapi::devices
auto guard = kstd::lock_guard{m_lock};
erase_if(m_observers, [&](auto const & subscribed) { return subscribed.lock().get() == &observer; });
- erase(m_static_observers, &observer);
+ erase(m_static_observers, kstd::make_observer(&observer));
}
} // namespace kapi::devices
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);
}
diff --git a/kernel/kapi/memory.cpp b/kernel/kapi/memory.cpp
index 7a9f7249..666910ba 100644
--- a/kernel/kapi/memory.cpp
+++ b/kernel/kapi/memory.cpp
@@ -128,7 +128,7 @@ namespace kapi::memory
}
auto const flags = page_mapper::flags::writable | page_mapper::flags::supervisor_only | page_mapper::flags::global;
- auto bitmap_ptr = static_cast<std::uint64_t *>(nullptr);
+ auto bitmap_ptr = kstd::observer_ptr<std::uint64_t>{nullptr};
std::ranges::for_each(std::views::iota(0uz, bitmap_pages), [&](auto index) {
auto page = page::containing(pmm_metadata_base + index * page::size);
@@ -136,12 +136,12 @@ namespace kapi::memory
auto mapped = active_page_mapper->map(page, frame, flags);
if (!bitmap_ptr)
{
- bitmap_ptr = reinterpret_cast<std::uint64_t *>(mapped.get());
+ bitmap_ptr = reinterpret_pointer_cast<std::uint64_t>(mapped);
}
});
- auto bitmap =
- std::span{bitmap_ptr, (bitmap_bytes + kstd::size_of<std::uint64_t>() - 1_B) / kstd::size_of<std::uint64_t>()};
+ auto bitmap = std::span{bitmap_ptr.get(),
+ (bitmap_bytes + kstd::size_of<std::uint64_t>() - 1_B) / kstd::size_of<std::uint64_t>()};
allocator.emplace(bitmap, frame_count);