diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-04-01 11:12:20 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-04-01 11:12:20 +0200 |
| commit | 419f4bebff5745b46bf30092dc7a7ca43449ea2e (patch) | |
| tree | 4b509ca6da26eeadaec193440c936954e4367f4e /kernel/kapi | |
| parent | c30ba8bc8c1cf80a7e9b46e9f1a66dc1b409fcbd (diff) | |
| download | teachos-419f4bebff5745b46bf30092dc7a7ca43449ea2e.tar.xz teachos-419f4bebff5745b46bf30092dc7a7ca43449ea2e.zip | |
kernel/tests: implement basic simulated memory
Diffstat (limited to 'kernel/kapi')
| -rw-r--r-- | kernel/kapi/memory.cpp | 8 |
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>}; |
