summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/src/KPC.cc
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/KPC.cc
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/KPC.cc')
-rw-r--r--dev/kernel/src/KPC.cc45
1 files changed, 45 insertions, 0 deletions
diff --git a/dev/kernel/src/KPC.cc b/dev/kernel/src/KPC.cc
new file mode 100644
index 00000000..7081bf51
--- /dev/null
+++ b/dev/kernel/src/KPC.cc
@@ -0,0 +1,45 @@
+/* -------------------------------------------
+
+ Copyright (C) 2024-2025, Amlal EL Mahrouss, all rights reserved.
+
+------------------------------------------- */
+
+#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 are needed.
+ /// @return if error-free: false, otherwise true.
+ 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);
+ }
+
+ return No;
+ }
+} // namespace NeOS