aboutsummaryrefslogtreecommitdiff
path: root/kernel/kapi/memory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/kapi/memory.cpp')
-rw-r--r--kernel/kapi/memory.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/kernel/kapi/memory.cpp b/kernel/kapi/memory.cpp
index 1c6fa2c8..7a9f7249 100644
--- a/kernel/kapi/memory.cpp
+++ b/kernel/kapi/memory.cpp
@@ -5,6 +5,7 @@
#include <kapi/system.hpp>
+#include <kstd/memory.hpp>
#include <kstd/print.hpp>
#include <kstd/units.hpp>
@@ -45,7 +46,7 @@ namespace kapi::memory
{
bad_page_mapper static instance;
- auto map(page, frame, flags) -> std::byte * override
+ auto map(page, frame, flags) -> kstd::observer_ptr<std::byte> override
{
system::panic("[OS:MEM] Tried to map a page without an active mapper.");
}
@@ -103,7 +104,7 @@ namespace kapi::memory
return get_frame_allocator().allocate_many(count);
}
- auto map(page page, frame frame, page_mapper::flags flags) -> std::byte *
+ auto map(page page, frame frame, page_mapper::flags flags) -> kstd::observer_ptr<std::byte>
{
return active_page_mapper->map(page, frame, flags);
}
@@ -135,7 +136,7 @@ namespace kapi::memory
auto mapped = active_page_mapper->map(page, frame, flags);
if (!bitmap_ptr)
{
- bitmap_ptr = reinterpret_cast<std::uint64_t *>(mapped);
+ bitmap_ptr = reinterpret_cast<std::uint64_t *>(mapped.get());
}
});
@@ -160,7 +161,8 @@ namespace kapi::memory
return {region, page_count};
}
- auto map_mmio_region(mmio_region region, physical_address hw_base, page_mapper::flags flags) -> std::byte *
+ auto map_mmio_region(mmio_region region, physical_address hw_base, page_mapper::flags flags)
+ -> kstd::observer_ptr<std::byte>
{
auto start_page = page::containing(region.first);
auto start_frame = frame::containing(hw_base);