aboutsummaryrefslogtreecommitdiff
path: root/kernel/kapi
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2026-04-01 11:12:20 +0200
committerFelix Morgner <felix.morgner@ost.ch>2026-04-01 11:12:20 +0200
commit419f4bebff5745b46bf30092dc7a7ca43449ea2e (patch)
tree4b509ca6da26eeadaec193440c936954e4367f4e /kernel/kapi
parentc30ba8bc8c1cf80a7e9b46e9f1a66dc1b409fcbd (diff)
downloadteachos-419f4bebff5745b46bf30092dc7a7ca43449ea2e.tar.xz
teachos-419f4bebff5745b46bf30092dc7a7ca43449ea2e.zip
kernel/tests: implement basic simulated memory
Diffstat (limited to 'kernel/kapi')
-rw-r--r--kernel/kapi/memory.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/kernel/kapi/memory.cpp b/kernel/kapi/memory.cpp
index 2803d76..06a3165 100644
--- a/kernel/kapi/memory.cpp
+++ b/kernel/kapi/memory.cpp
@@ -125,14 +125,18 @@ 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);
std::ranges::for_each(std::views::iota(0uz, bitmap_pages), [&](auto index) {
auto page = page::containing(pmm_metadata_base + index * page::size);
auto frame = memory::frame(bitmap_frames->first.number() + index);
- active_page_mapper->map(page, frame, flags);
+ auto mapped = active_page_mapper->map(page, frame, flags);
+ if (!bitmap_ptr)
+ {
+ bitmap_ptr = reinterpret_cast<std::uint64_t *>(mapped);
+ }
});
- auto bitmap_ptr = static_cast<std::uint64_t *>(pmm_metadata_base);
auto bitmap =
std::span{bitmap_ptr, (bitmap_bytes + kstd::type_size<std::uint64_t> - 1_B) / kstd::type_size<std::uint64_t>};