aboutsummaryrefslogtreecommitdiff
path: root/kernel/include
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2026-04-01 17:26:13 +0200
committerFelix Morgner <felix.morgner@ost.ch>2026-04-01 17:26:13 +0200
commitb078f2bf4726b5c62584cebd84107ac1028bb083 (patch)
tree944b7bff1e51b6f769e7b0d3eca93126e785a988 /kernel/include
parent1a22d810ff2772d6b4dba5b1eb27d21285668c6f (diff)
downloadteachos-b078f2bf4726b5c62584cebd84107ac1028bb083.tar.xz
teachos-b078f2bf4726b5c62584cebd84107ac1028bb083.zip
kernel/tests: clean up fake memory implementation
Diffstat (limited to 'kernel/include')
-rw-r--r--kernel/include/kernel/tests/bump_frame_allocator.hpp32
-rw-r--r--kernel/include/kernel/tests/page_mapper.hpp33
-rw-r--r--kernel/include/kernel/tests/simulated_memory.hpp18
3 files changed, 77 insertions, 6 deletions
diff --git a/kernel/include/kernel/tests/bump_frame_allocator.hpp b/kernel/include/kernel/tests/bump_frame_allocator.hpp
new file mode 100644
index 0000000..8344423
--- /dev/null
+++ b/kernel/include/kernel/tests/bump_frame_allocator.hpp
@@ -0,0 +1,32 @@
+#ifndef TEACHOS_KERNEL_TESTS_BUMP_FRAME_ALLOCATOR_HPP
+#define TEACHOS_KERNEL_TESTS_BUMP_FRAME_ALLOCATOR_HPP
+
+#include "kapi/memory.hpp"
+
+#include <cstddef>
+#include <optional>
+#include <utility>
+
+namespace kernel::tests
+{
+
+ struct bump_frame_allocator : kapi::memory::frame_allocator
+ {
+ auto mark_used(kapi::memory::frame) -> void override {}
+
+ auto allocate_many(std::size_t count) noexcept
+ -> std::optional<std::pair<kapi::memory::frame, std::size_t>> override
+ {
+ auto start = next_free_frame;
+ next_free_frame += count;
+ return std::pair{kapi::memory::frame{start}, count};
+ }
+
+ auto release_many(std::pair<kapi::memory::frame, std::size_t>) -> void override {}
+
+ std::size_t next_free_frame{};
+ };
+
+} // namespace kernel::tests
+
+#endif \ No newline at end of file
diff --git a/kernel/include/kernel/tests/page_mapper.hpp b/kernel/include/kernel/tests/page_mapper.hpp
new file mode 100644
index 0000000..9969976
--- /dev/null
+++ b/kernel/include/kernel/tests/page_mapper.hpp
@@ -0,0 +1,33 @@
+#ifndef TEACHOS_KERNEL_TESTS_PAGE_MAPPER_HPP
+#define TEACHOS_KERNEL_TESTS_PAGE_MAPPER_HPP
+
+#include "kapi/memory.hpp"
+
+#include "kernel/tests/simulated_memory.hpp"
+
+#include <kstd/units>
+
+#include <cstddef>
+#include <cstdint>
+#include <unordered_map>
+
+namespace kernel::tests
+{
+
+ struct page_mapper : kapi::memory::page_mapper
+ {
+ explicit page_mapper(kstd::units::bytes memory_size);
+
+ auto map(kapi::memory::page page, kapi::memory::frame frame, flags) -> std::byte * override;
+
+ auto unmap(kapi::memory::page page) -> void override;
+
+ auto try_unmap(kapi::memory::page page) noexcept -> bool override;
+
+ kernel::tests::simulated_memory memory;
+ std::unordered_map<std::uint64_t, kapi::memory::frame> page_mappings;
+ };
+
+} // namespace kernel::tests
+
+#endif \ No newline at end of file
diff --git a/kernel/include/kernel/tests/simulated_memory.hpp b/kernel/include/kernel/tests/simulated_memory.hpp
index fee4d7a..446d558 100644
--- a/kernel/include/kernel/tests/simulated_memory.hpp
+++ b/kernel/include/kernel/tests/simulated_memory.hpp
@@ -4,18 +4,24 @@
#include <kstd/units>
#include <cstddef>
+#include <vector>
-namespace kernel::tests::simulated_memory
+namespace kernel::tests
{
- auto init(kstd::units::bytes size) -> void;
+ struct simulated_memory
+ {
+ explicit simulated_memory(kstd::units::bytes size);
- auto reset() -> void;
+ auto clear() -> void;
- auto pmm_metadata_base() -> std::byte *;
+ auto ram_base() noexcept -> std::byte *;
+ [[nodiscard]] auto ram_base() const noexcept -> std::byte const *;
- auto ram_base() -> std::byte *;
+ private:
+ std::vector<std::byte> m_memory;
+ };
-} // namespace kernel::tests::simulated_memory
+} // namespace kernel::tests
#endif \ No newline at end of file