summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/src
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-11-21 03:30:40 -0500
committerGitHub <noreply@github.com>2025-11-21 03:30:40 -0500
commite3fa27827e7647a0ecc466f4d92097fe48fbbb43 (patch)
tree33ba30655f555d37e3c970707b27413936e5a9ad /dev/kernel/src
parentc739255b48b3a5b2e184ca1a637f9f1f95c978ff (diff)
parentefefa7221a3fea3636a64f2bf067e2af75626f34 (diff)
Merge pull request #79 from nekernel-org/devv0.0.61
Kernel: OpenHeFS fixes and new components.
Diffstat (limited to 'dev/kernel/src')
-rw-r--r--dev/kernel/src/BitMapMgr.cc23
-rw-r--r--dev/kernel/src/FS/OpenHeFS+FileSystemParser.cc26
-rw-r--r--dev/kernel/src/Json.cc3
-rw-r--r--dev/kernel/src/SoftwareTimer.cc2
-rw-r--r--dev/kernel/src/Variant.cc4
5 files changed, 22 insertions, 36 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
diff --git a/dev/kernel/src/FS/OpenHeFS+FileSystemParser.cc b/dev/kernel/src/FS/OpenHeFS+FileSystemParser.cc
index c79b6323..d8e22f18 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]);
}
@@ -1153,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
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 <NeKit/Json.h>
-/// @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 <KernelKit/Timer.h>
+/// ================================================================================
/// @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: