From 463e7472e737fb8259a30304e729772041ea5498 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Fri, 21 Nov 2025 09:09:33 +0100 Subject: feat: kernel: NeKit improvements and new TOML file. feat: frameworks: CoreFoundation improvements and new KTest framework. Signed-off-by: Amlal El Mahrouss --- dev/kernel/src/BitMapMgr.cc | 23 ++++++++++------------- dev/kernel/src/FS/OpenHeFS+FileSystemParser.cc | 13 +++++-------- dev/kernel/src/Json.cc | 3 +-- dev/kernel/src/SoftwareTimer.cc | 2 ++ dev/kernel/src/Variant.cc | 4 ++-- 5 files changed, 20 insertions(+), 25 deletions(-) (limited to 'dev/kernel/src') 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((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(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 diff --git a/dev/kernel/src/FS/OpenHeFS+FileSystemParser.cc b/dev/kernel/src/FS/OpenHeFS+FileSystemParser.cc index c79b6323..76a70f87 100644 --- a/dev/kernel/src/FS/OpenHeFS+FileSystemParser.cc +++ b/dev/kernel/src/FS/OpenHeFS+FileSystemParser.cc @@ -764,9 +764,6 @@ _Output Bool HeFileSystemParser::Format(_Input _Output DriveTrait* mnt, _Input c if (drv_std_get_size() < kHeFSMinimumDiskSize) { (Void)(kout << "OpenHeFS recommends at least 128 GiB of free space." << kendl); - (Void)(kout << "The OS will still try to format a OpenHeFS disk here anyway, don't expect " - "perfect geometry." - << kendl); } HEFS_BOOT_NODE* boot = (HEFS_BOOT_NODE*) RTL_ALLOCA(sizeof(HEFS_BOOT_NODE)); @@ -880,12 +877,12 @@ _Output Bool HeFileSystemParser::Format(_Input _Output DriveTrait* mnt, _Input c return NO; } - constexpr const SizeT kHeFSPreallocateCount = 0x6UL; + /// AMLALE: Better way to create default directories than before. + const Utf8Char* kFileMap[] = {u8"/", u8"/boot", u8"/system", u8"/network", + u8"/devices", u8"/media", u8"/dev", (Utf8Char*) nullptr}; - const Utf8Char* kFileMap[kHeFSPreallocateCount] = {u8"/", u8"/boot", u8"/system", - u8"/network", u8"/devices", u8"/media"}; - - for (SizeT i = 0; i < kHeFSPreallocateCount; ++i) { + SizeT i = 0; + while (kFileMap[++i] != nullptr) { this->CreateINodeDirectory(mnt, kHeFSEncodingFlagsUTF8, kFileMap[i]); } diff --git a/dev/kernel/src/Json.cc b/dev/kernel/src/Json.cc index 8f073da8..198aed99 100644 --- a/dev/kernel/src/Json.cc +++ b/dev/kernel/src/Json.cc @@ -6,5 +6,4 @@ #include -/// @brief Undefined object, is null in length. -RTL_INIT_OBJECT(Kernel::JsonObject::kNull, Kernel::JsonObject); +namespace Kernel {} \ No newline at end of file diff --git a/dev/kernel/src/SoftwareTimer.cc b/dev/kernel/src/SoftwareTimer.cc index 167fc630..eafe8db6 100644 --- a/dev/kernel/src/SoftwareTimer.cc +++ b/dev/kernel/src/SoftwareTimer.cc @@ -6,8 +6,10 @@ #include +/// ================================================================================ /// @brief SoftwareTimer class, meant to be generic. ///! @author Amlal El Mahrouss (amlal@nekernel.org) +/// ================================================================================ using namespace Kernel; diff --git a/dev/kernel/src/Variant.cc b/dev/kernel/src/Variant.cc index 732dabd2..fcf2f443 100644 --- a/dev/kernel/src/Variant.cc +++ b/dev/kernel/src/Variant.cc @@ -9,8 +9,8 @@ namespace Kernel { const Char* Variant::ToString() { switch (fKind) { - case VariantKind::kXML: - return ("Class:{XML}"); + case VariantKind::kTOML: + return ("Class:{TOML}"); case VariantKind::kJson: return ("Class:{Json}"); case VariantKind::kString: -- cgit v1.2.3 From efefa7221a3fea3636a64f2bf067e2af75626f34 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Fri, 21 Nov 2025 09:28:02 +0100 Subject: feat: kernel: OpenHeFS format tweaks. Signed-off-by: Amlal El Mahrouss --- dev/kernel/src/FS/OpenHeFS+FileSystemParser.cc | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) (limited to 'dev/kernel/src') diff --git a/dev/kernel/src/FS/OpenHeFS+FileSystemParser.cc b/dev/kernel/src/FS/OpenHeFS+FileSystemParser.cc index 76a70f87..d8e22f18 100644 --- a/dev/kernel/src/FS/OpenHeFS+FileSystemParser.cc +++ b/dev/kernel/src/FS/OpenHeFS+FileSystemParser.cc @@ -1150,19 +1150,10 @@ Boolean OpenHeFS::fs_init_openhefs(Void) noexcept { if (kMountpoint.A().fPacket.fPacketReadOnly == YES) { kout << "Main disk cannot be mounted (read-only media).\r"; - return NO; - } - - HeFileSystemParser parser; - - if (!parser.Format(&kMountpoint.A(), kHeFSEncodingFlagsUTF8, kHeFSDefaultVolumeName)) { - kout << "Failed to format OpenHeFS partition!\r"; - return NO; + return YES; } - kout << "Valid OpenHeFS disk...\r"; - - return YES; + return HeFileSystemParser{}.Format(&kMountpoint.A(), kHeFSEncodingFlagsUTF8, kHeFSDefaultVolumeName); } } // namespace Kernel -- cgit v1.2.3