aboutsummaryrefslogtreecommitdiff
path: root/kernel/src
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/src')
-rw-r--r--kernel/src/memory/block_list_allocator.tests.cpp13
-rw-r--r--kernel/src/test_support/page_mapper.cpp7
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();