From d9556c811b25a7c5533d1f61152ecb8863cfd042 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Fri, 9 Feb 2024 13:53:57 +0100 Subject: Kernel: Add ke_bug_check for Process Manager. Signed-off-by: Amlal El Mahrouss --- Private/KernelKit/HError.hpp | 2 ++ Private/Source/HError.cxx | 6 ++++++ Private/Source/ProcessManager.cxx | 8 +++++--- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/Private/KernelKit/HError.hpp b/Private/KernelKit/HError.hpp index d37fe276..0d412154 100644 --- a/Private/KernelKit/HError.hpp +++ b/Private/KernelKit/HError.hpp @@ -27,6 +27,8 @@ inline constexpr HError kErrorThreadLocalStorage = 41; inline constexpr HError kErrorMath = 42; inline constexpr HError kErrorNoNetwork = 43; inline constexpr HError kErrorHeapOutOfMemory = 44; + +Boolean ke_bug_check(void) noexcept; } // namespace HCore #define KernIsOk(HERR) (HERR == HCore::kErrorSuccess) diff --git a/Private/Source/HError.cxx b/Private/Source/HError.cxx index 000843df..6722e9d8 100644 --- a/Private/Source/HError.cxx +++ b/Private/Source/HError.cxx @@ -8,3 +8,9 @@ */ #include + +using namespace HCore; + +namespace HCore { +Boolean ke_bug_check(void) noexcept { return true; } +} // namespace HCore diff --git a/Private/Source/ProcessManager.cxx b/Private/Source/ProcessManager.cxx index 71f38e2f..1761c267 100644 --- a/Private/Source/ProcessManager.cxx +++ b/Private/Source/ProcessManager.cxx @@ -17,6 +17,8 @@ #include #include +#include "KernelKit/HError.hpp" + ///! bugs = 0 /***********************************************************************************/ @@ -38,8 +40,7 @@ const Int32 &rt_get_exit_code() noexcept { return kExitCode; } void Process::Crash() { kcout << this->Name << ": Crashed, ExitCode: -1\n"; - - // TODO: Bug check the system. + MUST_PASS(ke_bug_check()); this->Exit(-1); } @@ -281,7 +282,8 @@ bool ProcessHelper::Switch(HAL::StackFrame *the_stack, const PID &new_pid) { if (SMPManager::Shared().Leak()[index].Leak().IsBusy()) continue; - if (SMPManager::Shared().Leak()[index].Leak().Kind() != ThreadKind::kHartBoot || + if (SMPManager::Shared().Leak()[index].Leak().Kind() != + ThreadKind::kHartBoot || SMPManager::Shared().Leak()[index].Leak().Kind() != ThreadKind::kHartSystemReserved) { SMPManager::Shared().Leak()[index].Leak().Busy(true); -- cgit v1.2.3