diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-04-01 21:16:10 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-04-01 21:16:10 +0200 |
| commit | f8456a8709b6894166865eb4ca067604f480eb7f (patch) | |
| tree | c6768d7afaedff5cec060cd5b11428c4e688371f /kernel/src/test_support/kapi | |
| parent | dc64b1cba4677b40c9dda31ecd5109507837b817 (diff) | |
| download | teachos-f8456a8709b6894166865eb4ca067604f480eb7f.tar.xz teachos-f8456a8709b6894166865eb4ca067604f480eb7f.zip | |
kernel/tests: add basic heap allocator tests
Diffstat (limited to 'kernel/src/test_support/kapi')
| -rw-r--r-- | kernel/src/test_support/kapi/memory.cpp | 44 |
1 files changed, 26 insertions, 18 deletions
diff --git a/kernel/src/test_support/kapi/memory.cpp b/kernel/src/test_support/kapi/memory.cpp index 3a2c2ba..f244b7f 100644 --- a/kernel/src/test_support/kapi/memory.cpp +++ b/kernel/src/test_support/kapi/memory.cpp @@ -9,29 +9,29 @@ #include <optional> -namespace kapi::memory +namespace { + //! The size of the simulated RAM. + constexpr auto memory_size = kstd::units::MiB(32); + constexpr auto number_of_frames = memory_size / kapi::memory::frame::size; - namespace - { - //! The size of the simulated RAM. - constexpr auto memory_size = kstd::units::MiB(32); - constexpr auto number_of_frames = memory_size / frame::size; + auto constinit bump_allocator = std::optional<kernel::tests::bump_frame_allocator>{}; + auto constinit test_mapper = std::optional<kernel::tests::page_mapper>{}; - auto constinit bump_allocator = std::optional<kernel::tests::bump_frame_allocator>{}; - auto constinit test_mapper = std::optional<kernel::tests::page_mapper>{}; + auto constinit old_allocator = std::optional<kapi::memory::frame_allocator *>{}; + auto constinit old_mapper = std::optional<kapi::memory::page_mapper *>{}; - auto constinit old_allocator = std::optional<frame_allocator *>{}; - auto constinit old_mapper = std::optional<page_mapper *>{}; + auto handoff_to_kernel_pmm(kapi::memory::frame_allocator & new_allocator) -> void + { + auto first_free_frame = bump_allocator->next_free_frame; + auto number_of_free_frames = number_of_frames - first_free_frame; + new_allocator.release_many({kapi::memory::frame{first_free_frame}, number_of_free_frames}); + } - auto handoff_to_kernel_pmm(frame_allocator & new_allocator) -> void - { - auto first_free_frame = bump_allocator->next_free_frame; - auto number_of_free_frames = number_of_frames - first_free_frame; - new_allocator.release_many({frame{first_free_frame}, number_of_free_frames}); - } +} // namespace - } // namespace +namespace kapi::memory +{ auto init() -> void { @@ -60,4 +60,12 @@ namespace kapi::memory test_mapper.reset(); } -} // namespace kapi::memory
\ No newline at end of file +} // namespace kapi::memory + +namespace kernel::tests::memory +{ + auto heap_base() -> kapi::memory::linear_address + { + return test_mapper->memory.heap_base(); + } +} // namespace kernel::tests::memory
\ No newline at end of file |
