summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2026-03-07 05:48:47 +0100
committerAmlal El Mahrouss <amlal@nekernel.org>2026-03-07 05:49:22 +0100
commit556dfc1aa97b1f72792e46164d80601cd93c2b20 (patch)
tree6eb3c152045f42a639bfb7f400fd773f9e86c862 /src
parent54340d14d5231c4756800a327b54ec285cb7662a (diff)
[CHORE] Filesystem and panic dump improvements.filesystem-kit-bump
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'src')
-rw-r--r--src/boot/BootKit/BootKit.h8
-rw-r--r--src/kernel/DmaKit/DmaPool.h1
-rw-r--r--src/kernel/FSKit/Config.h6
-rw-r--r--src/kernel/FSKit/NeFS.h2
-rw-r--r--src/kernel/FSKit/OpenHeFS.h2
-rw-r--r--src/kernel/FirmwareKit/GPT.h2
-rw-r--r--src/kernel/FirmwareKit/VEPM.h4
-rw-r--r--src/kernel/HALKit/AMD64/HalKernelMain.cpp3
-rw-r--r--src/kernel/HALKit/AMD64/HalKernelPanic.cpp20
-rw-r--r--src/kernel/NeKit/KString.h12
-rw-r--r--src/kernel/NeKit/KernelPanic.h7
-rw-r--r--src/kernel/src/HeapMgr.cpp2
12 files changed, 51 insertions, 18 deletions
diff --git a/src/boot/BootKit/BootKit.h b/src/boot/BootKit/BootKit.h
index 4275e695..1d0686ae 100644
--- a/src/boot/BootKit/BootKit.h
+++ b/src/boot/BootKit/BootKit.h
@@ -1,4 +1,4 @@
-// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Copyright 2024-2026, Amlal El Mahrouss (amlal@nekernel.org)
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/ne-foss-org/nekernel
@@ -257,8 +257,8 @@ inline Boolean BDiskFormatFactory<BootDev>::Format(const Char* part_name) {
#if defined(BOOTZ_EPM_SUPPORT)
EPM_PART_BLOCK* epm_boot = (EPM_PART_BLOCK*) RTL_ALLOCA(sizeof(EPM_PART_BLOCK));
- const auto kFsName = "NeKernel";
- const auto kBlockName = " NeKernelOS";
+ const auto kFsName = "Ne";
+ const auto kBlockName = " NeSystem";
epm_boot->FsVersion = 0;
epm_boot->LbaStart = sizeof(EPM_PART_BLOCK);
@@ -331,4 +331,4 @@ inline Boolean BDiskFormatFactory<BootDev>::Format(const Char* part_name) {
}
} // namespace Boot
-#endif // __BOOTKIT_H__ \ No newline at end of file
+#endif // __BOOTKIT_H__
diff --git a/src/kernel/DmaKit/DmaPool.h b/src/kernel/DmaKit/DmaPool.h
index c0cc7830..4a1d4526 100644
--- a/src/kernel/DmaKit/DmaPool.h
+++ b/src/kernel/DmaKit/DmaPool.h
@@ -11,7 +11,6 @@
#define kNeDMAPoolStart (__nekernel_dma_pool_start)
#define kNeDMAPoolSize (__nekernel_dma_pool_size)
-
#define kNeDMABestAlign (__nekernel_dma_best_align)
namespace Kernel {
diff --git a/src/kernel/FSKit/Config.h b/src/kernel/FSKit/Config.h
index f12c421b..a9f06bf5 100644
--- a/src/kernel/FSKit/Config.h
+++ b/src/kernel/FSKit/Config.h
@@ -1,4 +1,4 @@
-// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Copyright 2024-2026, Amlal El Mahrouss (amlal@nekernel.org)
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/ne-foss-org/nekernel
@@ -7,7 +7,7 @@
#include <NeKit/Config.h>
-#define FSKIT_VERSION "0.0.2"
-#define FSKIT_VERSION_BCD 0x0002
+#define FSKIT_VERSION "0.0.3"
+#define FSKIT_VERSION_BCD 0x0003
#endif
diff --git a/src/kernel/FSKit/NeFS.h b/src/kernel/FSKit/NeFS.h
index 3f8ee0b4..bf314d3c 100644
--- a/src/kernel/FSKit/NeFS.h
+++ b/src/kernel/FSKit/NeFS.h
@@ -1,4 +1,4 @@
-// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Copyright 2024-2026, Amlal El Mahrouss (amlal@nekernel.org)
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/ne-foss-org/nekernel
diff --git a/src/kernel/FSKit/OpenHeFS.h b/src/kernel/FSKit/OpenHeFS.h
index 2bc05213..55d16db7 100644
--- a/src/kernel/FSKit/OpenHeFS.h
+++ b/src/kernel/FSKit/OpenHeFS.h
@@ -1,4 +1,4 @@
-// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Copyright 2024-2026, Amlal El Mahrouss (amlal@nekernel.org)
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/ne-foss-org/nekernel
diff --git a/src/kernel/FirmwareKit/GPT.h b/src/kernel/FirmwareKit/GPT.h
index e4f0c4b8..025378d0 100644
--- a/src/kernel/FirmwareKit/GPT.h
+++ b/src/kernel/FirmwareKit/GPT.h
@@ -1,4 +1,4 @@
-// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Copyright 2024-2026, Amlal El Mahrouss (amlal@nekernel.org)
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/ne-foss-org/nekernel
diff --git a/src/kernel/FirmwareKit/VEPM.h b/src/kernel/FirmwareKit/VEPM.h
index cac9aff1..192ad45d 100644
--- a/src/kernel/FirmwareKit/VEPM.h
+++ b/src/kernel/FirmwareKit/VEPM.h
@@ -1,4 +1,4 @@
-// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Copyright 2024-2026, Amlal El Mahrouss (amlal@nekernel.org)
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/ne-foss-org/nekernel
@@ -42,4 +42,4 @@ inline EFI_GUID kVEPMGuidEFI = {
#define kVEPMGuidStr "9a1b3f2e-4c3f-4d52-a783-9c217b5e4dac"
#endif // __NE_VEPM__
-#endif // FIRMWAREKIT_VEPM_H \ No newline at end of file
+#endif // FIRMWAREKIT_VEPM_H
diff --git a/src/kernel/HALKit/AMD64/HalKernelMain.cpp b/src/kernel/HALKit/AMD64/HalKernelMain.cpp
index ed508104..cb5fd461 100644
--- a/src/kernel/HALKit/AMD64/HalKernelMain.cpp
+++ b/src/kernel/HALKit/AMD64/HalKernelMain.cpp
@@ -156,7 +156,8 @@ EXTERN_C Kernel::Void hal_real_init(Kernel::Void) {
PEFLoader ldr("/system/init.out");
if (ldr.IsLoaded()) rtl_create_user_process(ldr, UserProcess::ExecutableKind::kExecutableKind);
-
+ else ke_panic(RUNTIME_CHECK_PROCESS, "RuntimeCheck: Invalid Process Data!");
+
UserProcessScheduler::The().SwitchTeam(kMidUserTeam);
while (YES);
diff --git a/src/kernel/HALKit/AMD64/HalKernelPanic.cpp b/src/kernel/HALKit/AMD64/HalKernelPanic.cpp
index 8c498b68..827bc5c3 100644
--- a/src/kernel/HALKit/AMD64/HalKernelPanic.cpp
+++ b/src/kernel/HALKit/AMD64/HalKernelPanic.cpp
@@ -38,7 +38,27 @@ Void ke_panic(const Kernel::Int32& id, const Char* message) {
}
Void RecoveryFactory::Recover() {
+ STATIC BOOL alreadyDumped = NO;
+#if defined(__FSKIT_INCLUDES_OPENHEFS__)
+ if (alreadyDumped) {
+ HAL::rt_cli();
+ HAL::rt_halt();
+ }
+
+ alreadyDumped = YES;
+
+ HeFileSystemMgr mgr;
+ auto node = mgr.Open("/system/dump.dmp", "wb");
+
+
+ if (node && hal_read_cr2()) mgr.Write(node, hal_read_cr2(), 0, 0x100);
+ if (node) mm_free_ptr(node);
+
+ node = nullptr;
+#endif
+
while (YES) {
+ HAL::rt_cli();
HAL::rt_halt();
}
}
diff --git a/src/kernel/NeKit/KString.h b/src/kernel/NeKit/KString.h
index 96063d39..3c12c03c 100644
--- a/src/kernel/NeKit/KString.h
+++ b/src/kernel/NeKit/KString.h
@@ -1,4 +1,4 @@
-// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Copyright 2024-2026, Amlal El Mahrouss (amlal@nekernel.org)
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/ne-foss-org/nekernel
@@ -22,6 +22,8 @@ class KBasicString final {
fDataSz = MinSz;
fData = new CharKind[fDataSz];
+ if (!fData) return;
+
MUST_PASS(fData);
rt_set_memory(fData, 0, fDataSz);
@@ -29,6 +31,8 @@ class KBasicString final {
KBasicString(const CharKind* In) : fDataSz(oe_string_len(In)) {
fData = new CharKind[fDataSz];
+ if (!fData) return;
+
MUST_PASS(fData);
rt_set_memory(fData, 0, fDataSz);
@@ -39,6 +43,8 @@ class KBasicString final {
MUST_PASS(fDataSz > 1);
fData = new CharKind[fDataSz];
+ if (!fData) return;
+
MUST_PASS(fData);
rt_set_memory(fData, 0, fDataSz);
@@ -74,8 +80,8 @@ class KBasicString final {
private:
CharKind* fData{nullptr};
- Size fDataSz{0};
- Size fCur{0};
+ SizeT fDataSz{};
+ SizeT fCur{};
friend class KStringBuilder;
};
diff --git a/src/kernel/NeKit/KernelPanic.h b/src/kernel/NeKit/KernelPanic.h
index 3b5dd698..940739f4 100644
--- a/src/kernel/NeKit/KernelPanic.h
+++ b/src/kernel/NeKit/KernelPanic.h
@@ -1,4 +1,4 @@
-// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org)
+// Copyright 2024-2026, Amlal El Mahrouss (amlal@nekernel.org)
// Licensed under the Apache License, Version 2.0 (see LICENSE file)
// Official repository: https://github.com/ne-foss-org/nekernel
@@ -60,8 +60,13 @@ enum RUNTIME_CHECK {
typedef enum RUNTIME_CHECK RTL_RUNTIME_CHECK;
namespace Kernel {
+
+/// @brief Raises a runtime-check for the system, it failing, the system will raise a panic.
void ke_runtime_check(bool expr, const Char* file, const Char* line);
+
+/// @brief Stops the system from running when unrecoverable.
void ke_panic(const Int32& id, const Char* message = nullptr);
+
} // namespace Kernel
#endif
diff --git a/src/kernel/src/HeapMgr.cpp b/src/kernel/src/HeapMgr.cpp
index a13bd9c2..a18fce5a 100644
--- a/src/kernel/src/HeapMgr.cpp
+++ b/src/kernel/src/HeapMgr.cpp
@@ -178,6 +178,8 @@ _Output UInt64 mm_get_ptr_flags(VoidPtr heap_ptr) {
/// @param heap_ptr the pointer.
/// @return
_Output Int32 mm_free_ptr(VoidPtr heap_ptr) {
+ if (!heap_ptr) return kErrorHeapNotPresent;
+
if (Detail::mm_check_ptr_address(heap_ptr) == No) return kErrorHeapNotPresent;
Detail::MM_INFORMATION_BLOCK_PTR heap_info_ptr =