From 9eca2ffd412b2552e153692c31a934c59078de5a Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Mon, 31 Dec 2018 20:25:42 +0100 Subject: [PATCH] Make PhysicalPage eternally allocated. --- Kernel/MemoryManager.cpp | 5 +++++ Kernel/MemoryManager.h | 8 +++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Kernel/MemoryManager.cpp b/Kernel/MemoryManager.cpp index fb0e929474..283b5aaf7d 100644 --- a/Kernel/MemoryManager.cpp +++ b/Kernel/MemoryManager.cpp @@ -655,6 +655,11 @@ Region::~Region() MM.unregister_region(*this); } +PhysicalPage::PhysicalPage(PhysicalAddress paddr) + : m_paddr(paddr) +{ +} + void PhysicalPage::return_to_freelist() { InterruptDisabler disabler; diff --git a/Kernel/MemoryManager.h b/Kernel/MemoryManager.h index 3d59789e8a..3c0a6f6408 100644 --- a/Kernel/MemoryManager.h +++ b/Kernel/MemoryManager.h @@ -20,10 +20,10 @@ enum class PageFaultResponse { }; class PhysicalPage { + AK_MAKE_ETERNAL friend class MemoryManager; friend class PageDirectory; public: - ~PhysicalPage() { } PhysicalAddress paddr() const { return m_paddr; } void retain() @@ -42,10 +42,8 @@ public: unsigned retain_count() const { return m_retain_count; } private: - PhysicalPage(PhysicalAddress paddr) - : m_paddr(paddr) - { - } + explicit PhysicalPage(PhysicalAddress paddr); + ~PhysicalPage() = delete; void return_to_freelist();