diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2025-12-12 14:07:28 +0100 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2025-12-12 14:07:28 +0100 |
| commit | 50c9c9a1d963e66f7658ab31e9ecd65bf227cfff (patch) | |
| tree | 7b16e1cbf5aafaa1f5a5d814cac96bb283009e0c /arch/x86_64/src/memory/scoped_mapping.cpp | |
| parent | 8fc5f9e3cc28b07b1f120eb1ffedc042fa6662b8 (diff) | |
| download | kernel-50c9c9a1d963e66f7658ab31e9ecd65bf227cfff.tar.xz kernel-50c9c9a1d963e66f7658ab31e9ecd65bf227cfff.zip | |
x86_64/memory: clean up dependencies
Diffstat (limited to 'arch/x86_64/src/memory/scoped_mapping.cpp')
| -rw-r--r-- | arch/x86_64/src/memory/scoped_mapping.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/arch/x86_64/src/memory/scoped_mapping.cpp b/arch/x86_64/src/memory/scoped_mapping.cpp index e243dc9..fa68387 100644 --- a/arch/x86_64/src/memory/scoped_mapping.cpp +++ b/arch/x86_64/src/memory/scoped_mapping.cpp @@ -14,14 +14,16 @@ namespace teachos::memory::x86_64 scoped_mapping::scoped_mapping(scoped_mapping && other) noexcept : m_page{std::exchange(other.m_page, page{})} + , m_mapper{std::exchange(other.m_mapper, nullptr)} , m_mapped{std::exchange(other.m_mapped, false)} {} - scoped_mapping::scoped_mapping(page page) + scoped_mapping::scoped_mapping(page page, page_mapper & mapper) : m_page{page} + , m_mapper{&mapper} , m_mapped{false} { - if (paging_root::get().translate(page)) + if (paging_root::get()->translate(page)) { system::panic("[MEM] Tried to map a page that is already mapped!"); } @@ -44,14 +46,14 @@ namespace teachos::memory::x86_64 auto scoped_mapping::map(frame frame, page_table::entry::flags flags) -> std::byte * { - auto result = active_page_mapper().map(m_page, frame, to_mapper_flags(flags)); + auto result = m_mapper->map(m_page, frame, to_mapper_flags(flags)); m_mapped = true; return result; } auto scoped_mapping::unmap() -> void { - active_page_mapper().unmap(m_page); + m_mapper->unmap(m_page); m_mapped = false; } @@ -59,6 +61,7 @@ namespace teachos::memory::x86_64 { using std::swap; swap(lhs.m_page, rhs.m_page); + swap(lhs.m_mapper, rhs.m_mapper); swap(lhs.m_mapped, rhs.m_mapped); } |
