diff options
| author | Marcel Braun <marcel.braun@ost.ch> | 2026-04-02 08:48:00 +0200 |
|---|---|---|
| committer | Marcel Braun <marcel.braun@ost.ch> | 2026-04-02 08:48:00 +0200 |
| commit | 0c01a95325b26151ff3c9a70142f5dc83ff7d53f (patch) | |
| tree | 9bf034f544ae773b653554a54edfce232f835754 /kernel/kapi/memory.cpp | |
| parent | 022d3e872de9c5a6a52c67f74af13706552330c0 (diff) | |
| parent | 3eb680cf5bcef626505cac82820996d8db4170d7 (diff) | |
| download | teachos-0c01a95325b26151ff3c9a70142f5dc83ff7d53f.tar.xz teachos-0c01a95325b26151ff3c9a70142f5dc83ff7d53f.zip | |
Merge branch 'fmorgner/develop-SA-FS26/kernel-bht' into 'develop-BA-FS26'
Add experimental support for kernel tests
See merge request teachos/kernel!20
Diffstat (limited to 'kernel/kapi/memory.cpp')
| -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>}; |
