diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-04-02 09:51:44 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-04-02 09:52:13 +0200 |
| commit | f7ff847498d629c05bb206b41a172f6735e2afe6 (patch) | |
| tree | 874d35673d59d0f1e4ebcf01d61d9160ba655f9c /kernel/src/test_support/page_mapper.cpp | |
| parent | 0c01a95325b26151ff3c9a70142f5dc83ff7d53f (diff) | |
| download | teachos-f7ff847498d629c05bb206b41a172f6735e2afe6.tar.xz teachos-f7ff847498d629c05bb206b41a172f6735e2afe6.zip | |
kernel/tests: clean up implementation structure
Diffstat (limited to 'kernel/src/test_support/page_mapper.cpp')
| -rw-r--r-- | kernel/src/test_support/page_mapper.cpp | 22 |
1 files changed, 7 insertions, 15 deletions
diff --git a/kernel/src/test_support/page_mapper.cpp b/kernel/src/test_support/page_mapper.cpp index abdcae5..9236deb 100644 --- a/kernel/src/test_support/page_mapper.cpp +++ b/kernel/src/test_support/page_mapper.cpp @@ -7,13 +7,12 @@ #include <cstddef> #include <format> #include <stdexcept> -#include <sys/mman.h> namespace kernel::tests { - page_mapper::page_mapper(kstd::units::bytes memory_size) - : memory{memory_size} + page_mapper::page_mapper(kstd::units::bytes physical_size, kstd::units::bytes virtual_size) + : memory{physical_size, virtual_size} {} auto page_mapper::map(kapi::memory::page page, kapi::memory::frame frame, flags) -> std::byte * @@ -26,21 +25,14 @@ namespace kernel::tests } auto page_address = page.start_address(); - auto sandbox_start = memory.heap_base(); - auto sandbox_end = sandbox_start + memory.heap_size(); + auto virtual_base = memory.virtual_base(); + auto virtual_end = virtual_base + memory.virtual_size(); - if (page_address >= sandbox_start && page_address < sandbox_end) + if (page_address >= virtual_base && page_address < virtual_end) { auto virtual_target = static_cast<std::byte *>(page_address); auto physical_offset = frame.number() * kapi::memory::frame::size; - auto mapped_ptr = mmap(virtual_target, kapi::memory::page::size.value, PROT_READ | PROT_WRITE, - MAP_SHARED | MAP_FIXED, memory.memory_descriptor(), physical_offset.value); - if (mapped_ptr == MAP_FAILED) - { - throw std::runtime_error("Failed to map page"); - } - - return static_cast<std::byte *>(mapped_ptr); + return memory.map(kapi::memory::page::size, virtual_target, physical_offset.value); } else if (page_address >= kapi::memory::mmio_base) { @@ -49,7 +41,7 @@ namespace kernel::tests else if (page_address >= kapi::memory::higher_half_direct_map_base) { auto offset = frame.number() * kapi::memory::frame::size; - return memory.ram_base() + offset; + return memory.physical_base() + offset; } return nullptr; |
