diff options
Diffstat (limited to 'dev/kernel/src/Pmm.cc')
| -rw-r--r-- | dev/kernel/src/Pmm.cc | 115 |
1 files changed, 50 insertions, 65 deletions
diff --git a/dev/kernel/src/Pmm.cc b/dev/kernel/src/Pmm.cc index 325e19af..35ea4195 100644 --- a/dev/kernel/src/Pmm.cc +++ b/dev/kernel/src/Pmm.cc @@ -1,6 +1,6 @@ /* ------------------------------------------- - Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved. + Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved. ------------------------------------------- */ @@ -9,90 +9,75 @@ #if defined(__NE_ARM64__) #include <HALKit/ARM64/Processor.h> -#endif // defined(__NE_ARM64__) +#endif // defined(__NE_ARM64__) #if defined(__NE_AMD64__) #include <HALKit/AMD64/Processor.h> -#endif // defined(__NE_AMD64__) +#endif // defined(__NE_AMD64__) -namespace Kernel -{ - /***********************************************************************************/ - /// @brief Pmm constructor. - /***********************************************************************************/ - Pmm::Pmm() - : fPageMgr() - { - kout << "[PMM] Allocate PageMemoryMgr.\r"; - } +namespace Kernel { +/***********************************************************************************/ +/// @brief Pmm constructor. +/***********************************************************************************/ +Pmm::Pmm() : fPageMgr() { + kout << "[PMM] Allocate PageMemoryMgr.\r"; +} - Pmm::~Pmm() = default; +Pmm::~Pmm() = default; - /***********************************************************************************/ - /// @param If this returns Null pointer, enter emergency mode. - /// @param user is this a user page? - /// @param readWrite is it r/w? - /***********************************************************************************/ - Ref<PTEWrapper> Pmm::RequestPage(Boolean user, Boolean readWrite) - { - PTEWrapper pt = fPageMgr.Leak().Request(user, readWrite, false, kPageSize, 0); +/***********************************************************************************/ +/// @param If this returns Null pointer, enter emergency mode. +/// @param user is this a user page? +/// @param readWrite is it r/w? +/***********************************************************************************/ +Ref<PTEWrapper> Pmm::RequestPage(Boolean user, Boolean readWrite) { + PTEWrapper pt = fPageMgr.Leak().Request(user, readWrite, false, kPageSize, 0); - if (pt.fPresent) - { - kout << "[PMM]: Allocation failed.\r"; - return {}; - } + if (pt.fPresent) { + kout << "[PMM]: Allocation failed.\r"; + return {}; + } - return Ref<PTEWrapper>(pt); - } + return Ref<PTEWrapper>(pt); +} - Boolean Pmm::FreePage(Ref<PTEWrapper> PageRef) - { - if (!PageRef) - return false; +Boolean Pmm::FreePage(Ref<PTEWrapper> PageRef) { + if (!PageRef) return false; - PageRef.Leak().fPresent = false; + PageRef.Leak().fPresent = false; - return true; - } + return true; +} - Boolean Pmm::TogglePresent(Ref<PTEWrapper> PageRef, Boolean Enable) - { - if (!PageRef) - return false; +Boolean Pmm::TogglePresent(Ref<PTEWrapper> PageRef, Boolean Enable) { + if (!PageRef) return false; - PageRef.Leak().fPresent = Enable; + PageRef.Leak().fPresent = Enable; - return true; - } + return true; +} - Boolean Pmm::ToggleUser(Ref<PTEWrapper> PageRef, Boolean Enable) - { - if (!PageRef) - return false; +Boolean Pmm::ToggleUser(Ref<PTEWrapper> PageRef, Boolean Enable) { + if (!PageRef) return false; - PageRef.Leak().fRw = Enable; + PageRef.Leak().fRw = Enable; - return true; - } + return true; +} - Boolean Pmm::ToggleRw(Ref<PTEWrapper> PageRef, Boolean Enable) - { - if (!PageRef) - return false; +Boolean Pmm::ToggleRw(Ref<PTEWrapper> PageRef, Boolean Enable) { + if (!PageRef) return false; - PageRef.Leak().fRw = Enable; + PageRef.Leak().fRw = Enable; - return true; - } + return true; +} - Boolean Pmm::ToggleShare(Ref<PTEWrapper> PageRef, Boolean Enable) - { - if (!PageRef) - return false; +Boolean Pmm::ToggleShare(Ref<PTEWrapper> PageRef, Boolean Enable) { + if (!PageRef) return false; - PageRef.Leak().fShareable = Enable; + PageRef.Leak().fShareable = Enable; - return true; - } -} // namespace Kernel + return true; +} +} // namespace Kernel |
