diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-04-01 22:52:22 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-04-01 22:52:22 +0200 |
| commit | 3eb680cf5bcef626505cac82820996d8db4170d7 (patch) | |
| tree | 9bf034f544ae773b653554a54edfce232f835754 /kernel | |
| parent | f8456a8709b6894166865eb4ca067604f480eb7f (diff) | |
| download | teachos-3eb680cf5bcef626505cac82820996d8db4170d7.tar.xz teachos-3eb680cf5bcef626505cac82820996d8db4170d7.zip | |
kernel/tests: prevent double mapping of pages
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/src/memory/block_list_allocator.tests.cpp | 13 | ||||
| -rw-r--r-- | kernel/src/test_support/page_mapper.cpp | 7 |
2 files changed, 19 insertions, 1 deletions
diff --git a/kernel/src/memory/block_list_allocator.tests.cpp b/kernel/src/memory/block_list_allocator.tests.cpp index 5f6f382..8ca426d 100644 --- a/kernel/src/memory/block_list_allocator.tests.cpp +++ b/kernel/src/memory/block_list_allocator.tests.cpp @@ -1,5 +1,7 @@ #include "kernel/memory/block_list_allocator.hpp" +#include "kapi/memory.hpp" + #include "kernel/test_support/memory.hpp" #include <kstd/units> @@ -10,10 +12,21 @@ using namespace kstd::units_literals; +namespace kapi +{ + namespace memory + { + auto reset() -> void; + } +} // namespace kapi + SCENARIO("Block List Allocator Operations", "[memory][allocator]") { GIVEN("A newly initialized block list allocator mapped via the test sandbox") { + kapi::memory::reset(); + kapi::memory::init(); + auto sandbox_base = kernel::tests::memory::heap_base(); kernel::memory::block_list_allocator allocator{sandbox_base}; diff --git a/kernel/src/test_support/page_mapper.cpp b/kernel/src/test_support/page_mapper.cpp index 805998b..abdcae5 100644 --- a/kernel/src/test_support/page_mapper.cpp +++ b/kernel/src/test_support/page_mapper.cpp @@ -18,7 +18,12 @@ namespace kernel::tests auto page_mapper::map(kapi::memory::page page, kapi::memory::frame frame, flags) -> std::byte * { - page_mappings.insert({page.number(), frame}); + 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 sandbox_start = memory.heap_base(); |
