summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2025-03-24 05:08:21 +0100
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2025-03-24 05:08:21 +0100
commit77a1bd038f4288a7c24cfe52ad9824ca947c6671 (patch)
treed7e3fe10fce24ddc6a2b3db15a6dc9d6aeee2451 /dev/kernel
parent66be78af046c20bd110793c03062a3ff67b04f9c (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')
-rw-r--r--dev/kernel/HALKit/AMD64/HalApplicationProcessor.cc2
-rw-r--r--dev/kernel/HALKit/AMD64/MBCI/HalMBCI.cc7
-rw-r--r--dev/kernel/HALKit/AMD64/Storage/AHCI+Generic.cc2
-rw-r--r--dev/kernel/HALKit/ARM64/APM/APM+IO.cc2
-rw-r--r--dev/kernel/HALKit/ARM64/MBCI/MBCI.cc7
-rw-r--r--dev/kernel/HALKit/ARM64/ReadMe.md2
-rw-r--r--dev/kernel/HALKit/POWER/ReadMe.md2
-rw-r--r--dev/kernel/HALKit/RISCV/ReadMe.md2
-rw-r--r--dev/kernel/KernelKit/DriveMgr.h2
-rw-r--r--dev/kernel/KernelKit/FileMgr.h2
-rw-r--r--dev/kernel/KernelKit/KPC.h (renamed from dev/kernel/KernelKit/LPC.h)9
-rw-r--r--dev/kernel/KernelKit/MemoryMgr.h2
-rw-r--r--dev/kernel/KernelKit/Timer.h2
-rw-r--r--dev/kernel/KernelKit/User.h2
-rw-r--r--dev/kernel/NewKit/Defines.h2
-rw-r--r--dev/kernel/src/CxxAbi-AMD64.cc2
-rw-r--r--dev/kernel/src/CxxAbi-ARM64.cc2
-rw-r--r--dev/kernel/src/FS/HeFS.cc2
-rw-r--r--dev/kernel/src/FS/NeFS.cc2
-rw-r--r--dev/kernel/src/KPC.cc (renamed from dev/kernel/src/LPC.cc)33
-rw-r--r--dev/kernel/src/MemoryMgr.cc6
-rw-r--r--dev/kernel/src/Network/IPCAddr.cc2
-rw-r--r--dev/kernel/src/Network/IPCMsg.cc2
-rw-r--r--dev/kernel/src/User.cc2
-rw-r--r--dev/kernel/src/UserProcessScheduler.cc2
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