aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64/src/memory/scoped_mapping.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86_64/src/memory/scoped_mapping.cpp')
-rw-r--r--arch/x86_64/src/memory/scoped_mapping.cpp69
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