aboutsummaryrefslogtreecommitdiff
path: root/kernel/src/test_support/page_mapper.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/src/test_support/page_mapper.cpp')
-rw-r--r--kernel/src/test_support/page_mapper.cpp70
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