diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2025-03-24 05:08:21 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2025-03-24 05:08:21 +0100 |
| commit | 77a1bd038f4288a7c24cfe52ad9824ca947c6671 (patch) | |
| tree | d7e3fe10fce24ddc6a2b3db15a6dc9d6aeee2451 /dev/kernel | |
| parent | 66be78af046c20bd110793c03062a3ff67b04f9c (diff) | |
kernel(feat): Add basic wide system bug check (memory check), other
changes have been made too, see commit details for more information.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/kernel')
25 files changed, 48 insertions, 54 deletions
diff --git a/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc b/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc index da680afa..5880cc7c 100644 --- a/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc +++ b/dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc @@ -30,7 +30,7 @@ /////////////////////////////////////////////////////////////////////////////////////// -//! NOTE: fGSI stands 'Field Global System Interrupt' +/// @brief The **HAL** namespace. /////////////////////////////////////////////////////////////////////////////////////// diff --git a/dev/kernel/HALKit/AMD64/MBCI/HalMBCI.cc b/dev/kernel/HALKit/AMD64/MBCI/HalMBCI.cc deleted file mode 100644 index 09632bc9..00000000 --- a/dev/kernel/HALKit/AMD64/MBCI/HalMBCI.cc +++ /dev/null @@ -1,7 +0,0 @@ -/* ------------------------------------------- - - Copyright (C) 2024-2025, Amlal EL Mahrouss, all rights reserved. - -------------------------------------------- */ - -#include <modules/MBCI/MBCI.h> diff --git a/dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc b/dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc index 002266de..0180288c 100644 --- a/dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc +++ b/dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc @@ -18,7 +18,7 @@ #include <KernelKit/DeviceMgr.h> #include <KernelKit/DriveMgr.h> #include <KernelKit/UserProcessScheduler.h> -#include <KernelKit/LPC.h> +#include <KernelKit/KPC.h> #include <FirmwareKit/EPM.h> diff --git a/dev/kernel/HALKit/ARM64/APM/APM+IO.cc b/dev/kernel/HALKit/ARM64/APM/APM+IO.cc index 752f29f9..5fb45452 100644 --- a/dev/kernel/HALKit/ARM64/APM/APM+IO.cc +++ b/dev/kernel/HALKit/ARM64/APM/APM+IO.cc @@ -5,7 +5,7 @@ ------------------------------------------- */ #include <modules/APM/APM.h> -#include <KernelKit/LPC.h> +#include <KernelKit/KPC.h> using namespace NeOS; diff --git a/dev/kernel/HALKit/ARM64/MBCI/MBCI.cc b/dev/kernel/HALKit/ARM64/MBCI/MBCI.cc deleted file mode 100644 index d2df66e6..00000000 --- a/dev/kernel/HALKit/ARM64/MBCI/MBCI.cc +++ /dev/null @@ -1,7 +0,0 @@ -/* ------------------------------------------- - - Copyright (C) 2025, Amlal EL Mahrouss, all rights reserved. - -------------------------------------------- */ - -#include <modules/MBCI/MBCI.h>
\ No newline at end of file diff --git a/dev/kernel/HALKit/ARM64/ReadMe.md b/dev/kernel/HALKit/ARM64/ReadMe.md index c51229f2..a2807e5c 100644 --- a/dev/kernel/HALKit/ARM64/ReadMe.md +++ b/dev/kernel/HALKit/ARM64/ReadMe.md @@ -1,3 +1,3 @@ # ARM64 Hardware Abstraction Layer -- Supported Firmware: CoreBoot/EDK/OpenMobileBoot +- Supported Firmware: NeKernel CoreBoot/EDK diff --git a/dev/kernel/HALKit/POWER/ReadMe.md b/dev/kernel/HALKit/POWER/ReadMe.md index a9751581..a4919c4a 100644 --- a/dev/kernel/HALKit/POWER/ReadMe.md +++ b/dev/kernel/HALKit/POWER/ReadMe.md @@ -1,4 +1,4 @@ POWER Hardware Abstraction Layer - Supported CPU: POWER -- Supported Firmware: CoreBoot
\ No newline at end of file +- Supported Firmware: NeKernel CoreBoot
\ No newline at end of file diff --git a/dev/kernel/HALKit/RISCV/ReadMe.md b/dev/kernel/HALKit/RISCV/ReadMe.md index b099aa31..982a2acb 100644 --- a/dev/kernel/HALKit/RISCV/ReadMe.md +++ b/dev/kernel/HALKit/RISCV/ReadMe.md @@ -1,4 +1,4 @@ RISCV64 Hardware Abstraction Layer - Supported CPU: RISCV64 -- Supported Firmware: CoreBoot
\ No newline at end of file +- Supported Firmware: NeKernel CoreBoot
\ No newline at end of file diff --git a/dev/kernel/KernelKit/DriveMgr.h b/dev/kernel/KernelKit/DriveMgr.h index 87bd2714..fd972ab7 100644 --- a/dev/kernel/KernelKit/DriveMgr.h +++ b/dev/kernel/KernelKit/DriveMgr.h @@ -11,7 +11,7 @@ #include <CompilerKit/CompilerKit.h> #include <KernelKit/DebugOutput.h> #include <KernelKit/DeviceMgr.h> -#include <KernelKit/LPC.h> +#include <KernelKit/KPC.h> #include <NewKit/Defines.h> #include <NewKit/KString.h> #include <NewKit/Ref.h> diff --git a/dev/kernel/KernelKit/FileMgr.h b/dev/kernel/KernelKit/FileMgr.h index 7374df9d..59203998 100644 --- a/dev/kernel/KernelKit/FileMgr.h +++ b/dev/kernel/KernelKit/FileMgr.h @@ -31,7 +31,7 @@ #include <CompilerKit/CompilerKit.h> #include <HintsKit/CompilerHint.h> -#include <KernelKit/LPC.h> +#include <KernelKit/KPC.h> #include <KernelKit/DebugOutput.h> #include <NewKit/Stream.h> #include <NewKit/ErrorOr.h> diff --git a/dev/kernel/KernelKit/LPC.h b/dev/kernel/KernelKit/KPC.h index d76eeff1..9b62c14e 100644 --- a/dev/kernel/KernelKit/LPC.h +++ b/dev/kernel/KernelKit/KPC.h @@ -8,8 +8,8 @@ #include <NewKit/Defines.h> -/// @file LPC.h -/// @brief Local Process Codes. +/// @file KPC.h +/// @brief Kernel Procedure Code. #define err_local_ok() (NeOS::UserProcessScheduler::The().CurrentProcess().Leak().GetLocalCode() == NeOS::kErrorSuccess) #define err_local_fail() (NeOS::UserProcessScheduler::The().CurrentProcess().Leak().GetLocalCode() != NeOS::kErrorSuccess) @@ -60,11 +60,8 @@ namespace NeOS inline constexpr HError kErrorFileLocked = 64; inline constexpr HError kErrorUnimplemented = -1; - /// @brief Raises a bug check stop code. - Void err_bug_check_raise(Void) noexcept; - /// @brief Does a system wide bug check. /// @param void no params are needed. /// @return if error-free: false, otherwise true. - Boolean err_bug_check(Void) noexcept; + Boolean err_bug_check_raise(Void) noexcept; } // namespace NeOS diff --git a/dev/kernel/KernelKit/MemoryMgr.h b/dev/kernel/KernelKit/MemoryMgr.h index 93718493..139ae7aa 100644 --- a/dev/kernel/KernelKit/MemoryMgr.h +++ b/dev/kernel/KernelKit/MemoryMgr.h @@ -12,7 +12,7 @@ /// @brief: heap allocation support. #include <NewKit/KernelPanic.h> -#include <KernelKit/LPC.h> +#include <KernelKit/KPC.h> #include <HintsKit/CompilerHint.h> namespace NeOS diff --git a/dev/kernel/KernelKit/Timer.h b/dev/kernel/KernelKit/Timer.h index abca5352..e52f91e7 100644 --- a/dev/kernel/KernelKit/Timer.h +++ b/dev/kernel/KernelKit/Timer.h @@ -7,7 +7,7 @@ #pragma once #include <ArchKit/ArchKit.h> -#include <KernelKit/LPC.h> +#include <KernelKit/KPC.h> namespace NeOS { diff --git a/dev/kernel/KernelKit/User.h b/dev/kernel/KernelKit/User.h index 9ab2b02e..620b9bc9 100644 --- a/dev/kernel/KernelKit/User.h +++ b/dev/kernel/KernelKit/User.h @@ -16,7 +16,7 @@ ------------------------------------------- */ #include <CompilerKit/CompilerKit.h> -#include <KernelKit/LPC.h> +#include <KernelKit/KPC.h> #include <NewKit/KString.h> #include <NewKit/Defines.h> diff --git a/dev/kernel/NewKit/Defines.h b/dev/kernel/NewKit/Defines.h index 0b0b97e5..7758c053 100644 --- a/dev/kernel/NewKit/Defines.h +++ b/dev/kernel/NewKit/Defines.h @@ -27,7 +27,7 @@ #endif #endif -/// @brief The **Kernel** namespace where it's API resides. +/// @brief The **Kernel** namespace. namespace NeOS { using voidPtr = void*; diff --git a/dev/kernel/src/CxxAbi-AMD64.cc b/dev/kernel/src/CxxAbi-AMD64.cc index f0e57077..555c613f 100644 --- a/dev/kernel/src/CxxAbi-AMD64.cc +++ b/dev/kernel/src/CxxAbi-AMD64.cc @@ -8,7 +8,7 @@ #include <KernelKit/DebugOutput.h> #include <NewKit/CxxAbi.h> -#include <KernelKit/LPC.h> +#include <KernelKit/KPC.h> atexit_func_entry_t __atexit_funcs[kAtExitMacDestructors]; diff --git a/dev/kernel/src/CxxAbi-ARM64.cc b/dev/kernel/src/CxxAbi-ARM64.cc index b52be160..a24dfce3 100644 --- a/dev/kernel/src/CxxAbi-ARM64.cc +++ b/dev/kernel/src/CxxAbi-ARM64.cc @@ -8,7 +8,7 @@ #include <KernelKit/DebugOutput.h> #include <NewKit/CxxAbi.h> -#include <KernelKit/LPC.h> +#include <KernelKit/KPC.h> atexit_func_entry_t __atexit_funcs[kAtExitMacDestructors]; diff --git a/dev/kernel/src/FS/HeFS.cc b/dev/kernel/src/FS/HeFS.cc index 7615ed77..b6f1bede 100644 --- a/dev/kernel/src/FS/HeFS.cc +++ b/dev/kernel/src/FS/HeFS.cc @@ -10,7 +10,7 @@ #include <modules/ATA/ATA.h> #include <modules/Flash/Flash.h> #include <FSKit/HeFS.h> -#include <KernelKit/LPC.h> +#include <KernelKit/KPC.h> #include <NewKit/Crc32.h> #include <NewKit/KernelPanic.h> #include <NewKit/KString.h> diff --git a/dev/kernel/src/FS/NeFS.cc b/dev/kernel/src/FS/NeFS.cc index 00824122..5878067f 100644 --- a/dev/kernel/src/FS/NeFS.cc +++ b/dev/kernel/src/FS/NeFS.cc @@ -11,7 +11,7 @@ #include <modules/AHCI/AHCI.h> #include <modules/ATA/ATA.h> -#include <KernelKit/LPC.h> +#include <KernelKit/KPC.h> #include <NewKit/Crc32.h> #include <NewKit/KernelPanic.h> #include <NewKit/KString.h> diff --git a/dev/kernel/src/LPC.cc b/dev/kernel/src/KPC.cc index b6b2e11b..7081bf51 100644 --- a/dev/kernel/src/LPC.cc +++ b/dev/kernel/src/KPC.cc @@ -4,18 +4,37 @@ ------------------------------------------- */ -#include <KernelKit/LPC.h> +#include <KernelKit/KPC.h> #include <NewKit/KernelPanic.h> +#include <KernelKit/MemoryMgr.h> namespace NeOS { STATIC Bool kRaiseOnBugCheck = false; /// @brief Does a system wide bug check. - /// @param void no params. + /// @param void no params are needed. /// @return if error-free: false, otherwise true. - Boolean err_bug_check(void) noexcept + Boolean err_bug_check_raise(Void) noexcept { + Char* ptr = new Char[512]; + + if (ptr == nullptr) + goto bug_check_fail; + + if (!mm_is_valid_heap(ptr)) + goto bug_check_fail; + + delete[] ptr; + + return Yes; + + bug_check_fail: + if (ptr) + delete[] ptr; + + ptr = nullptr; + if (kRaiseOnBugCheck) { ke_panic(RUNTIME_CHECK_BAD_BEHAVIOR); @@ -23,12 +42,4 @@ namespace NeOS return No; } - - /// @brief Tells if we should raise a bug check not. - /// @param void - /// @return void - Void err_bug_check_raise(Void) noexcept - { - kRaiseOnBugCheck = true; - } } // namespace NeOS diff --git a/dev/kernel/src/MemoryMgr.cc b/dev/kernel/src/MemoryMgr.cc index 4e13ea15..5e595b51 100644 --- a/dev/kernel/src/MemoryMgr.cc +++ b/dev/kernel/src/MemoryMgr.cc @@ -5,7 +5,7 @@ ------------------------------------------- */ #include <KernelKit/DebugOutput.h> -#include <KernelKit/LPC.h> +#include <KernelKit/KPC.h> #include <KernelKit/MemoryMgr.h> #include <NewKit/Crc32.h> #include <NewKit/PageMgr.h> @@ -25,11 +25,11 @@ //! @brief Heap algorithm that serves as the main memory manager. #define kKernelHeapMagic (0xD4D75) -#define kKernelHeapAlignSz (__BIGGEST_ALIGNMENT__) +#define kKernelHeapAlignSz (4) namespace NeOS { - /// @brief Contains data structures and algorithms for the heap. + /// @brief Implementation details. namespace Detail { struct PACKED HEAP_INFORMATION_BLOCK; diff --git a/dev/kernel/src/Network/IPCAddr.cc b/dev/kernel/src/Network/IPCAddr.cc index 75a54a36..fb2d785a 100644 --- a/dev/kernel/src/Network/IPCAddr.cc +++ b/dev/kernel/src/Network/IPCAddr.cc @@ -5,7 +5,7 @@ ------------------------------------------- */ #include <NetworkKit/IPC.h> -#include <KernelKit/LPC.h> +#include <KernelKit/KPC.h> #include <KernelKit/UserProcessScheduler.h> namespace NeOS diff --git a/dev/kernel/src/Network/IPCMsg.cc b/dev/kernel/src/Network/IPCMsg.cc index f5bec6f7..5c18fe9c 100644 --- a/dev/kernel/src/Network/IPCMsg.cc +++ b/dev/kernel/src/Network/IPCMsg.cc @@ -5,7 +5,7 @@ ------------------------------------------- */ #include <NetworkKit/IPC.h> -#include <KernelKit/LPC.h> +#include <KernelKit/KPC.h> #include <KernelKit/UserProcessScheduler.h> namespace NeOS diff --git a/dev/kernel/src/User.cc b/dev/kernel/src/User.cc index 3c23c59e..fab5da88 100644 --- a/dev/kernel/src/User.cc +++ b/dev/kernel/src/User.cc @@ -11,7 +11,7 @@ */ #include <KernelKit/User.h> -#include <KernelKit/LPC.h> +#include <KernelKit/KPC.h> #include <NewKit/KernelPanic.h> #include <KernelKit/FileMgr.h> #include <KernelKit/MemoryMgr.h> diff --git a/dev/kernel/src/UserProcessScheduler.cc b/dev/kernel/src/UserProcessScheduler.cc index 1087ac6b..19861dbe 100644 --- a/dev/kernel/src/UserProcessScheduler.cc +++ b/dev/kernel/src/UserProcessScheduler.cc @@ -18,7 +18,7 @@ #include <ArchKit/ArchKit.h> #include <KernelKit/MemoryMgr.h> #include <NewKit/KString.h> -#include <KernelKit/LPC.h> +#include <KernelKit/KPC.h> ///! BUGS: 0 |
