summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/src
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/src
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/src')
-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
10 files changed, 33 insertions, 22 deletions
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