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 | |
| 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')
33 files changed, 65 insertions, 82 deletions
diff --git a/dev/SCIKit/CompilerHint.h b/dev/SCIKit/CompilerHint.h deleted file mode 100644 index a78e59bf..00000000 --- a/dev/SCIKit/CompilerHint.h +++ /dev/null @@ -1,12 +0,0 @@ -/* ------------------------------------------- - - Copyright (C) 2024-2025, Amlal EL Mahrouss, all rights reserved. - -------------------------------------------- */ - -#ifndef SCI_HINT_H -#define SCI_HINT_H - -#include <HintsKit/CompilerHint.h> - -#endif // ifndef SCI_HINT_H diff --git a/dev/SCIKit/LPC.h b/dev/SCIKit/LPC.h index 044d272e..b0bb2d83 100644 --- a/dev/SCIKit/LPC.h +++ b/dev/SCIKit/LPC.h @@ -9,7 +9,7 @@ #include <SCIKit/Macros.h> /// @file LPC.h -/// @brief Local Process Code type and values. +/// @brief Local Procedure Code type and values. #define err_local_ok() (kLastError == kErrorSuccess) #define err_local_fail() (kLastError != kErrorSuccess) diff --git a/dev/SCIKit/Macros.h b/dev/SCIKit/Macros.h index c7bd61e8..174d644a 100644 --- a/dev/SCIKit/Macros.h +++ b/dev/SCIKit/Macros.h @@ -11,10 +11,10 @@ Purpose: libsci Macros header. /***********************************************************************************/ /// @file SCIKit/Macros.h -/// @brief Macros and core types. +/// @brief Macros and Core types. /***********************************************************************************/ -#include <SCIKit/CompilerHint.h> +#include <HintsKit/CompilerHint.h> #define ATTRIBUTE(X) __attribute__((X)) @@ -23,10 +23,10 @@ Purpose: libsci Macros header. #define DEPRECATED ATTRIBUTE(deprecated) -#define EXIT_SUCCESS 0 -#define EXIT_FAILURE 1 +#define EXIT_SUCCESS (0) +#define EXIT_FAILURE (1) -#define FILE_MAX_LEN 256 +#define FILE_MAX_LEN (256) #ifndef BOOL #define BOOL bool @@ -37,8 +37,8 @@ typedef bool Boolean; typedef void Void; #ifndef __cplusplus -#define true 1 -#define false 0 +#define true (1) +#define false (0) #endif #define YES true @@ -87,7 +87,7 @@ IMPORT_C void _rtl_assert(Bool expr, const Char* origin); #define MUST_PASS(X) _rtl_assert(X, __FILE__) #ifndef ARRAY_SIZE -#define ARRAY_SIZE(a) \ - (((sizeof(a) / sizeof(*(a))) / \ - (static_cast<SizeT>(!(sizeof(a) % sizeof(*(a))))))) +#define ARRAY_SIZE(X) \ + (((sizeof(X) / sizeof(*(X))) / \ + (static_cast<SizeT>(!(sizeof(X) % sizeof(*(X))))))) #endif
\ No newline at end of file diff --git a/dev/SCIKit/SCI.h b/dev/SCIKit/SystemCalls.h index 3e769262..7615a2d1 100644 --- a/dev/SCIKit/SCI.h +++ b/dev/SCIKit/SystemCalls.h @@ -2,7 +2,7 @@ Copyright (C) 2024-2025, Amlal EL Mahrouss, all rights reserved.
-File: SCI.h
+File: SystemCalls.h
Purpose: System Call Interface.
------------------------------------------- */
@@ -336,4 +336,6 @@ IMPORT_C BOOL FsCreateAlias(const char* path, const char* from); IMPORT_C Char* StrFmt(const Char* fmt, ...);
+IMPORT_C UInt64 MathToNumber(const Char* in, const Char** endp, const SInt16 base);
+
#endif // ifndef SCI_SCI_H
diff --git a/dev/SCIKit/src/SCI.cc b/dev/SCIKit/src/SCI.cc index 3427ae4e..6556754d 100644 --- a/dev/SCIKit/src/SCI.cc +++ b/dev/SCIKit/src/SCI.cc @@ -4,7 +4,7 @@ ------------------------------------------- */
-#include <SCIKit/SCI.h>
+#include <SCIKit/SystemCalls.h>
/// @file libsci.cc
/// @brief Source file for the memory functions of the libsci.
diff --git a/dev/boot/amd64-desktop.make b/dev/boot/amd64-desktop.make index 212a61dc..22023923 100644 --- a/dev/boot/amd64-desktop.make +++ b/dev/boot/amd64-desktop.make @@ -28,7 +28,7 @@ BIOS=OVMF.fd IMG=epm-master-1.img IMG_2=epm-master-2.img -BOOT=./src/neos.img +BOOT=./src/neos_esp.img DISK_DRV = 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 diff --git a/dev/modules/CoreGfx/AccessibilityMgr.h b/dev/modules/CoreGfx/AccessibilityMgr.h index a45470eb..a7cd24b5 100644 --- a/dev/modules/CoreGfx/AccessibilityMgr.h +++ b/dev/modules/CoreGfx/AccessibilityMgr.h @@ -8,7 +8,7 @@ #define GFX_MGR_ACCESSIBILITY_H #include <NewKit/NewKit.h> -#include <KernelKit/LPC.h> +#include <KernelKit/KPC.h> #include <modules/CoreGfx/FBMgr.h> #include <modules/CoreGfx/MathMgr.h> #include <ArchKit/ArchKit.h> diff --git a/dev/modules/ReadMe.md b/dev/modules/ReadMe.md index 1261e247..5e71937f 100644 --- a/dev/modules/ReadMe.md +++ b/dev/modules/ReadMe.md @@ -7,6 +7,5 @@ They are pluggable modules for specific hardware support. ## To-Do - [X] AHCI kernel module. -- [X] MBCI kernel module. ###### Copyright (C) 2024-2025, Amlal EL Mahrouss, all rights reserved. All rights reserved. |
