diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-03-16 19:03:53 +0100 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-03-16 19:03:53 +0100 |
| commit | 69a92ce3077f01ce43daef5681db298594a4badc (patch) | |
| tree | de3a97018853d453c550bba7a1507211ae28fd31 /arch/x86_64/src/memory/scoped_mapping.cpp | |
| parent | cc5f6ef95acb7a0024c43eba314eb1f3563b41b8 (diff) | |
| download | kernel-69a92ce3077f01ce43daef5681db298594a4badc.tar.xz kernel-69a92ce3077f01ce43daef5681db298594a4badc.zip | |
x86_64/memory: remove recursive mapping
Diffstat (limited to 'arch/x86_64/src/memory/scoped_mapping.cpp')
| -rw-r--r-- | arch/x86_64/src/memory/scoped_mapping.cpp | 69 |
1 files changed, 0 insertions, 69 deletions
diff --git a/arch/x86_64/src/memory/scoped_mapping.cpp b/arch/x86_64/src/memory/scoped_mapping.cpp deleted file mode 100644 index dde1dda..0000000 --- a/arch/x86_64/src/memory/scoped_mapping.cpp +++ /dev/null @@ -1,69 +0,0 @@ -#include "arch/memory/scoped_mapping.hpp" - -#include "kapi/memory.hpp" -#include "kapi/system.hpp" - -#include "arch/memory/mmu.hpp" -#include "arch/memory/page_table.hpp" -#include "arch/memory/paging_root.hpp" - -#include <cstddef> -#include <utility> - -namespace arch::memory -{ - - scoped_mapping::scoped_mapping(scoped_mapping && other) noexcept - : m_page{std::exchange(other.m_page, kapi::memory::page{})} - , m_mapper{std::exchange(other.m_mapper, nullptr)} - , m_mapped{std::exchange(other.m_mapped, false)} - {} - - scoped_mapping::scoped_mapping(kapi::memory::page page, kapi::memory::page_mapper & mapper) - : m_page{page} - , m_mapper{&mapper} - , m_mapped{false} - { - if (paging_root::get()->translate(page)) - { - kapi::system::panic("[MEM] Tried to map a page that is already mapped!"); - } - } - - scoped_mapping::~scoped_mapping() noexcept - { - if (m_mapped) - { - unmap(); - tlb_flush(m_page.start_address()); - } - } - - auto scoped_mapping::operator=(scoped_mapping && other) noexcept -> scoped_mapping & - { - swap(*this, other); - return *this; - } - - auto scoped_mapping::map(kapi::memory::frame frame, page_table::entry::flags flags) -> std::byte * - { - auto result = m_mapper->map(m_page, frame, to_mapper_flags(flags)); - m_mapped = true; - return result; - } - - auto scoped_mapping::unmap() -> void - { - m_mapper->unmap(m_page); - m_mapped = false; - } - - auto swap(scoped_mapping & lhs, scoped_mapping & rhs) -> void - { - using std::swap; - swap(lhs.m_page, rhs.m_page); - swap(lhs.m_mapper, rhs.m_mapper); - swap(lhs.m_mapped, rhs.m_mapped); - } - -} // namespace arch::memory
\ No newline at end of file |
