diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2026-03-07 05:48:47 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2026-03-07 05:49:22 +0100 |
| commit | 556dfc1aa97b1f72792e46164d80601cd93c2b20 (patch) | |
| tree | 6eb3c152045f42a639bfb7f400fd773f9e86c862 /src/kernel | |
| parent | 54340d14d5231c4756800a327b54ec285cb7662a (diff) | |
[CHORE] Filesystem and panic dump improvements.filesystem-kit-bump
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'src/kernel')
| -rw-r--r-- | src/kernel/DmaKit/DmaPool.h | 1 | ||||
| -rw-r--r-- | src/kernel/FSKit/Config.h | 6 | ||||
| -rw-r--r-- | src/kernel/FSKit/NeFS.h | 2 | ||||
| -rw-r--r-- | src/kernel/FSKit/OpenHeFS.h | 2 | ||||
| -rw-r--r-- | src/kernel/FirmwareKit/GPT.h | 2 | ||||
| -rw-r--r-- | src/kernel/FirmwareKit/VEPM.h | 4 | ||||
| -rw-r--r-- | src/kernel/HALKit/AMD64/HalKernelMain.cpp | 3 | ||||
| -rw-r--r-- | src/kernel/HALKit/AMD64/HalKernelPanic.cpp | 20 | ||||
| -rw-r--r-- | src/kernel/NeKit/KString.h | 12 | ||||
| -rw-r--r-- | src/kernel/NeKit/KernelPanic.h | 7 | ||||
| -rw-r--r-- | src/kernel/src/HeapMgr.cpp | 2 |
11 files changed, 47 insertions, 14 deletions
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 = |
