diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-01-29 18:17:47 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-01-29 18:18:59 +0100 |
| commit | 65254486efff0fd1bb78a48ff90b7713a5ce539f (patch) | |
| tree | 20ce02c12a74ba9e6cd382bf9c1f09a0c611cb4d /Private/HALKit/AMD64/HalPageAlloc.cpp | |
| parent | f03986937db0b927da4b10554801e18e4dc7c43f (diff) | |
Kernel: Update TODO.
Src: Refactorings according to clang-format.
Meta: Update specification.
Public: Remove useless UIKit.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'Private/HALKit/AMD64/HalPageAlloc.cpp')
| -rw-r--r-- | Private/HALKit/AMD64/HalPageAlloc.cpp | 81 |
1 files changed, 38 insertions, 43 deletions
diff --git a/Private/HALKit/AMD64/HalPageAlloc.cpp b/Private/HALKit/AMD64/HalPageAlloc.cpp index 07cfbecf..25757942 100644 --- a/Private/HALKit/AMD64/HalPageAlloc.cpp +++ b/Private/HALKit/AMD64/HalPageAlloc.cpp @@ -16,46 +16,41 @@ static hCore::UIntPtr kPagePtr = kPagePtrAddress; static hCore::SizeT kPageCnt = 0UL; -namespace hCore -{ - namespace HAL - { - static auto hal_try_alloc_new_page(SizeT sz, Boolean rw, Boolean user) -> PageTable64* - { - char *ptr = &(reinterpret_cast<char*>(kPagePtr))[kPageCnt + 1]; - - PageTable64 *pte = reinterpret_cast<PageTable64*>(ptr); - pte->Rw = rw; - pte->User = user; - pte->Present = true; - - return pte; - } - - auto hal_alloc_page(SizeT sz, Boolean rw, Boolean user) -> PageTable64* - { - for (SizeT i = 0; i < kPageCnt; ++i) - { - PageTable64 *pte = (reinterpret_cast<PageTable64*>(&kPagePtr) + i); - - if (!pte->Present) { - pte->User = user; - pte->Rw = rw; - pte->Present = true; - - return pte; - } - } - - return hal_try_alloc_new_page(sz, rw, user); - } - - auto hal_create_page(Boolean rw, Boolean user) -> UIntPtr - { - PageTable64 *new_pte = hal_alloc_page(sizeof(PageTable64), rw, user); - MUST_PASS(new_pte); - - return reinterpret_cast<UIntPtr>(new_pte); - } - } // namespace HAL -} // namespace hCore +namespace hCore { +namespace HAL { +static auto hal_try_alloc_new_page(SizeT sz, Boolean rw, Boolean user) + -> PageTable64 * { + char *ptr = &(reinterpret_cast<char *>(kPagePtr))[kPageCnt + 1]; + + PageTable64 *pte = reinterpret_cast<PageTable64 *>(ptr); + pte->Rw = rw; + pte->User = user; + pte->Present = true; + + return pte; +} + +auto hal_alloc_page(SizeT sz, Boolean rw, Boolean user) -> PageTable64 * { + for (SizeT i = 0; i < kPageCnt; ++i) { + PageTable64 *pte = (reinterpret_cast<PageTable64 *>(&kPagePtr) + i); + + if (!pte->Present) { + pte->User = user; + pte->Rw = rw; + pte->Present = true; + + return pte; + } + } + + return hal_try_alloc_new_page(sz, rw, user); +} + +auto hal_create_page(Boolean rw, Boolean user) -> UIntPtr { + PageTable64 *new_pte = hal_alloc_page(sizeof(PageTable64), rw, user); + MUST_PASS(new_pte); + + return reinterpret_cast<UIntPtr>(new_pte); +} +} // namespace HAL +} // namespace hCore |
