diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-04-01 17:26:13 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-04-01 17:26:13 +0200 |
| commit | b078f2bf4726b5c62584cebd84107ac1028bb083 (patch) | |
| tree | 944b7bff1e51b6f769e7b0d3eca93126e785a988 /kernel/include | |
| parent | 1a22d810ff2772d6b4dba5b1eb27d21285668c6f (diff) | |
| download | teachos-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.hpp | 32 | ||||
| -rw-r--r-- | kernel/include/kernel/tests/page_mapper.hpp | 33 | ||||
| -rw-r--r-- | kernel/include/kernel/tests/simulated_memory.hpp | 18 |
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 |
