summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/src/BitMapMgr.cc
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-11-21 09:09:33 +0100
committerAmlal El Mahrouss <amlal@nekernel.org>2025-11-21 09:25:16 +0100
commit463e7472e737fb8259a30304e729772041ea5498 (patch)
tree0cd4aee9d7d0eea2d5279f76bf37fd6887fbc65d /dev/kernel/src/BitMapMgr.cc
parentc464e5800961c809c73d4180f8a66885b53c63d7 (diff)
feat: kernel: NeKit improvements and new TOML file.
feat: frameworks: CoreFoundation improvements and new KTest framework. Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/kernel/src/BitMapMgr.cc')
-rw-r--r--dev/kernel/src/BitMapMgr.cc23
1 files changed, 10 insertions, 13 deletions
diff --git a/dev/kernel/src/BitMapMgr.cc b/dev/kernel/src/BitMapMgr.cc
index 2039e1c9..d7ecb810 100644
--- a/dev/kernel/src/BitMapMgr.cc
+++ b/dev/kernel/src/BitMapMgr.cc
@@ -88,9 +88,10 @@ namespace HAL {
}
VoidPtr base = reinterpret_cast<VoidPtr>((UIntPtr) base_ptr);
-
MUST_PASS(base);
+ if (!base) return nullptr;
+
STATIC SizeT biggest = 0UL;
while (YES) {
@@ -105,7 +106,7 @@ namespace HAL {
this->GetBitMapStatus(ptr_bit_set);
UInt32 flags = this->MakeMMFlags(wr, user);
- mm_map_page(ptr_bit_set, ptr_bit_set, flags);
+ mm_map_page(ptr_bit_set, (VoidPtr)mm_get_page_addr(ptr_bit_set), flags);
if (biggest < (size + pad)) biggest = size + pad;
@@ -121,7 +122,7 @@ namespace HAL {
this->GetBitMapStatus(ptr_bit_set);
UInt32 flags = this->MakeMMFlags(wr, user);
- mm_map_page(ptr_bit_set, ptr_bit_set, flags);
+ mm_map_page(ptr_bit_set, (VoidPtr)mm_get_page_addr(ptr_bit_set), flags);
if (biggest < (size + pad)) biggest = (size + pad);
@@ -136,7 +137,6 @@ namespace HAL {
: ptr_bit_set[kBitMapSizeIdx];
base = reinterpret_cast<VoidPtr>(raw_base + offset);
-
if (base == nullptr) return nullptr;
}
@@ -166,9 +166,10 @@ namespace HAL {
};
} // namespace Detail
+ STATIC Detail::IBitMapProxy kBitMapMgr;
+
auto mm_is_bitmap(VoidPtr ptr) -> BOOL {
- Detail::IBitMapProxy bitmp;
- return bitmp.IsBitMap(ptr);
+ return kBitMapMgr.IsBitMap(ptr);
}
/***********************************************************************************/
@@ -178,12 +179,10 @@ namespace HAL {
/// @return a new bitmap allocated pointer.
/***********************************************************************************/
auto mm_alloc_bitmap(Boolean wr, Boolean user, SizeT size, Bool is_page, SizeT pad) -> VoidPtr {
- VoidPtr ptr_new = nullptr;
- Detail::IBitMapProxy bitmp;
-
+ VoidPtr ptr_new = nullptr;
if (is_page) return nullptr;
- ptr_new = bitmp.FindBitMap(kKernelBitMpStart, size, wr, user, pad);
+ ptr_new = kBitMapMgr.FindBitMap(kKernelBitMpStart, size, wr, user, pad);
if (!ptr_new) {
ke_panic(RUNTIME_CHECK_VIRTUAL_OUT_OF_MEM, "Out of memory bitmap");
@@ -200,9 +199,7 @@ namespace HAL {
auto mm_free_bitmap(VoidPtr ptr) -> Bool {
if (!ptr) return No;
- Detail::IBitMapProxy bitmp;
- Bool ret = bitmp.FreeBitMap(ptr);
-
+ Bool ret = kBitMapMgr.FreeBitMap(ptr);
return ret;
}
} // namespace HAL