diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-07-03 09:32:30 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-07-03 09:32:30 +0200 |
| commit | 3012fa5dfe5dfed5e83baf9b40934ed8e8317627 (patch) | |
| tree | 00d1c60a3d5d1cdfa55e0ff1691cd3362b6064ee /kernel/src/test_support/simulated_memory.cpp | |
| parent | 5d8a58d538515ffc57ddf82ba40ba763990a8696 (diff) | |
| download | kernel-3012fa5dfe5dfed5e83baf9b40934ed8e8317627.tar.xz kernel-3012fa5dfe5dfed5e83baf9b40934ed8e8317627.zip | |
kernel: rearrange sources according to p1204
Diffstat (limited to 'kernel/src/test_support/simulated_memory.cpp')
| -rw-r--r-- | kernel/src/test_support/simulated_memory.cpp | 106 |
1 files changed, 0 insertions, 106 deletions
diff --git a/kernel/src/test_support/simulated_memory.cpp b/kernel/src/test_support/simulated_memory.cpp deleted file mode 100644 index 074e6b10..00000000 --- a/kernel/src/test_support/simulated_memory.cpp +++ /dev/null @@ -1,106 +0,0 @@ -#include <kernel/test_support/simulated_memory.hpp> - -#include <kapi/memory.hpp> - -#include <kstd/units> - -#include <cerrno> -#include <cstddef> -#include <cstring> -#include <format> -#include <stdexcept> -#include <unistd.h> - -#include <sys/mman.h> -#include <sys/types.h> - -namespace kernel::tests -{ - - simulated_memory::simulated_memory(kstd::units::bytes physical_size, kstd::units::bytes virtual_size) - : m_descriptor{memfd_create("teachos_simulated_memory", 0)} - , m_physical_size{physical_size} - , m_virtual_size{virtual_size} - { - if (m_descriptor < 0) - { - auto error = std::format("Failed to allocate backing memory: {}", strerror(errno)); - throw std::runtime_error(error); - } - - if (ftruncate(m_descriptor, static_cast<off_t>(m_physical_size.value)) < 0) - { - auto error = std::format("Failed to reserve backing memory: {}", strerror(errno)); - throw std::runtime_error(error); - } - - auto physical_storage = mmap(nullptr, m_physical_size.value, PROT_READ | PROT_WRITE, MAP_SHARED, m_descriptor, 0); - if (physical_storage == MAP_FAILED) - { - auto error = std::format("Failed to map backing memory: {}", strerror(errno)); - throw std::runtime_error(error); - } - - auto virtual_pointer = mmap(nullptr, virtual_size.value, PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); - if (virtual_pointer == MAP_FAILED) - { - auto error = std::format("Failed to reserve virtual memory: {}", strerror(errno)); - throw std::runtime_error(error); - } - - m_physical_base = static_cast<std::byte *>(physical_storage); - m_virtual_base = static_cast<std::byte *>(virtual_pointer); - - clear(); - } - - simulated_memory::~simulated_memory() - { - munmap(m_virtual_base, m_virtual_size.value); - munmap(m_physical_base, m_physical_size.value); - close(m_descriptor); - } - - auto simulated_memory::clear() -> void - { - std::memset(m_physical_base, 0, m_physical_size.value); - } - - auto simulated_memory::physical_base() noexcept -> std::byte * - { - return m_physical_base; - } - - auto simulated_memory::physical_base() const noexcept -> std::byte const * - { - return m_physical_base; - } - - auto simulated_memory::physical_size() const noexcept -> kstd::units::bytes - { - return m_physical_size; - } - - auto simulated_memory::virtual_base() const noexcept -> kapi::memory::linear_address - { - return kapi::memory::linear_address{m_virtual_base}; - } - - auto simulated_memory::virtual_size() const noexcept -> kstd::units::bytes - { - return m_virtual_size; - } - - auto simulated_memory::map(kstd::units::bytes size, std::byte * to, off_t offset) -> std::byte * - { - auto mapped_ptr = mmap(to, size.value, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_FIXED, m_descriptor, offset); - if (mapped_ptr == MAP_FAILED) - { - auto error = std::format("Failed to map page: {}", strerror(errno)); - throw std::runtime_error(error); - } - - return static_cast<std::byte *>(mapped_ptr); - } - -} // namespace kernel::tests
\ No newline at end of file |
