From 77a1bd038f4288a7c24cfe52ad9824ca947c6671 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Mon, 24 Mar 2025 05:08:21 +0100 Subject: 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 --- dev/kernel/src/CxxAbi-AMD64.cc | 2 +- dev/kernel/src/CxxAbi-ARM64.cc | 2 +- dev/kernel/src/FS/HeFS.cc | 2 +- dev/kernel/src/FS/NeFS.cc | 2 +- dev/kernel/src/KPC.cc | 45 ++++++++++++++++++++++++++++++++++ dev/kernel/src/LPC.cc | 34 ------------------------- dev/kernel/src/MemoryMgr.cc | 6 ++--- dev/kernel/src/Network/IPCAddr.cc | 2 +- dev/kernel/src/Network/IPCMsg.cc | 2 +- dev/kernel/src/User.cc | 2 +- dev/kernel/src/UserProcessScheduler.cc | 2 +- 11 files changed, 56 insertions(+), 45 deletions(-) create mode 100644 dev/kernel/src/KPC.cc delete mode 100644 dev/kernel/src/LPC.cc (limited to 'dev/kernel/src') 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 #include -#include +#include 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 #include -#include +#include 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 #include #include -#include +#include #include #include #include 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 #include -#include +#include #include #include #include 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 +#include +#include + +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 diff --git a/dev/kernel/src/LPC.cc b/dev/kernel/src/LPC.cc deleted file mode 100644 index b6b2e11b..00000000 --- a/dev/kernel/src/LPC.cc +++ /dev/null @@ -1,34 +0,0 @@ -/* ------------------------------------------- - - Copyright (C) 2024-2025, Amlal EL Mahrouss, all rights reserved. - -------------------------------------------- */ - -#include -#include - -namespace NeOS -{ - STATIC Bool kRaiseOnBugCheck = false; - - /// @brief Does a system wide bug check. - /// @param void no params. - /// @return if error-free: false, otherwise true. - Boolean err_bug_check(void) noexcept - { - if (kRaiseOnBugCheck) - { - ke_panic(RUNTIME_CHECK_BAD_BEHAVIOR); - } - - 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 -#include +#include #include #include #include @@ -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 -#include +#include #include 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 -#include +#include #include 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 -#include +#include #include #include #include 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 #include #include -#include +#include ///! BUGS: 0 -- cgit v1.2.3