From bb790af9762e48812962c6d328fe90bb4ec91432 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Sat, 11 Jan 2025 16:30:07 +0100 Subject: ADD: Better memory management, filesystem lookup and tweaks. Signed-off-by: Amlal El Mahrouss --- dev/Kernel/src/BitMapMgr.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'dev/Kernel/src/BitMapMgr.cc') diff --git a/dev/Kernel/src/BitMapMgr.cc b/dev/Kernel/src/BitMapMgr.cc index aa32cb93..63666f3e 100644 --- a/dev/Kernel/src/BitMapMgr.cc +++ b/dev/Kernel/src/BitMapMgr.cc @@ -15,7 +15,8 @@ #include #include -#define kBitMapMagic (0x10210U) +#define kBitMapMagic (0x10210U) +#define kBitMapPadSize (mib_cast(16)) #define kBitMapMagIdx (0U) #define kBitMapSizeIdx (1U) @@ -87,12 +88,13 @@ namespace Kernel VoidPtr base = reinterpret_cast(((UIntPtr)base_ptr) + kPageSize); - while (((UIntPtr)base) < (reinterpret_cast(base) + kHandoverHeader->f_BitMapSize)) + while (YES) { UIntPtr* ptr_bit_set = reinterpret_cast(base); if (ptr_bit_set[kBitMapMagIdx] == kBitMapMagic && - ptr_bit_set[kBitMapSizeIdx] <= size) + ptr_bit_set[kBitMapSizeIdx] <= size && + !ptr_bit_set[kBitMapUsedIdx]) { if (ptr_bit_set[kBitMapUsedIdx] == No) { @@ -121,7 +123,7 @@ namespace Kernel return (VoidPtr)ptr_bit_set; } - base = reinterpret_cast(reinterpret_cast(base) + ((ptr_bit_set[kBitMapMagIdx] != kBitMapMagic) ? size : ptr_bit_set[kBitMapSizeIdx])); + base = reinterpret_cast(reinterpret_cast(base) + ((ptr_bit_set[kBitMapMagIdx] != kBitMapMagic) ? (size) : ptr_bit_set[kBitMapSizeIdx])); } return nullptr; -- cgit v1.2.3