diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-07-03 09:32:30 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-07-03 09:32:30 +0200 |
| commit | 3012fa5dfe5dfed5e83baf9b40934ed8e8317627 (patch) | |
| tree | 00d1c60a3d5d1cdfa55e0ff1691cd3362b6064ee /kernel/src/test_support/page_mapper.cpp | |
| parent | 5d8a58d538515ffc57ddf82ba40ba763990a8696 (diff) | |
| download | kernel-3012fa5dfe5dfed5e83baf9b40934ed8e8317627.tar.xz kernel-3012fa5dfe5dfed5e83baf9b40934ed8e8317627.zip | |
kernel: rearrange sources according to p1204
Diffstat (limited to 'kernel/src/test_support/page_mapper.cpp')
| -rw-r--r-- | kernel/src/test_support/page_mapper.cpp | 70 |
1 files changed, 0 insertions, 70 deletions
diff --git a/kernel/src/test_support/page_mapper.cpp b/kernel/src/test_support/page_mapper.cpp deleted file mode 100644 index 3d50ff1a..00000000 --- a/kernel/src/test_support/page_mapper.cpp +++ /dev/null @@ -1,70 +0,0 @@ -#include <kernel/test_support/page_mapper.hpp> - -#include <kapi/memory.hpp> - -#include <kstd/units> - -#include <cstddef> -#include <format> -#include <stdexcept> - -namespace kernel::tests -{ - - 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 * - { - auto result = page_mappings.insert({page.number(), frame}); - if (!result.second) - { - auto error = std::format("Page {} was already mapped!", page.number()); - throw std::invalid_argument{error}; - } - - auto page_address = page.start_address(); - auto virtual_base = memory.virtual_base(); - auto virtual_end = virtual_base + memory.virtual_size(); - - 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; - return memory.map(kapi::memory::page::size, virtual_target, physical_offset.value); - } - else if (page_address >= kapi::memory::mmio_base) - { - throw std::runtime_error("MMIO mapping not yet supported in testing!"); - } - else if (page_address >= kapi::memory::higher_half_direct_map_base) - { - auto offset = frame.number() * kapi::memory::frame::size; - return memory.physical_base() + offset; - } - - return nullptr; - } - - auto page_mapper::unmap(kapi::memory::page page) -> void - { - if (!try_unmap(page)) - { - auto error = std::format("Page {} was never mapped!", page.number()); - throw std::invalid_argument{error}; - } - } - - auto page_mapper::try_unmap(kapi::memory::page page) noexcept -> bool - { - if (page_mappings.contains(page.number())) - { - page_mappings.erase(page.number()); - return true; - } - - return false; - } - -} // namespace kernel::tests
\ No newline at end of file |
