From a0a90c80e5dd17df8f609aebc253b4bf9147f90f Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Wed, 4 Sep 2024 12:56:23 +0200 Subject: Created a new branch for the overhaul project. Signed-off-by: Amlal El Mahrouss --- dev/ZKA/Sources/UserProcessScheduler.cxx | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) (limited to 'dev/ZKA/Sources/UserProcessScheduler.cxx') diff --git a/dev/ZKA/Sources/UserProcessScheduler.cxx b/dev/ZKA/Sources/UserProcessScheduler.cxx index dc142b18..26d8be79 100644 --- a/dev/ZKA/Sources/UserProcessScheduler.cxx +++ b/dev/ZKA/Sources/UserProcessScheduler.cxx @@ -28,13 +28,13 @@ namespace Kernel /// @brief Exit Code global variable. /***********************************************************************************/ - UInt32 cLastExitCode = 0U; + STATIC UInt32 cLastExitCode = 0U; /***********************************************************************************/ /// @brief UserProcess scheduler instance. /***********************************************************************************/ - UserProcessScheduler* cProcessScheduler = nullptr; + STATIC UserProcessScheduler* cProcessScheduler; /// @brief Gets the last exit code. /// @note Not thread-safe. @@ -53,11 +53,9 @@ namespace Kernel if (this->Name == 0) return; - kcout << this->Name << ": crashed. (id = " << number(kErrorProcessFault) << endl; + kcout << this->Name << ": crashed, ID = " << number(kErrorProcessFault) << endl; this->Exit(kErrorProcessFault); - - UserProcessHelper::StartScheduling(); } /// @brief Gets the local last exit code. @@ -246,8 +244,12 @@ namespace Kernel } process.StackFrame = new HAL::StackFrame(); - - MUST_PASS(process.StackFrame); + + if (!process.StackFrame) + { + process.Crash(); + return -kErrorProcessFault; + } if (process.Image) { @@ -291,6 +293,11 @@ namespace Kernel UserProcessScheduler& UserProcessScheduler::The() { + if (!cProcessScheduler) + { + cProcessScheduler = new UserProcessScheduler(); + } + MUST_PASS(cProcessScheduler); return *cProcessScheduler; } @@ -414,14 +421,6 @@ namespace Kernel SizeT UserProcessHelper::StartScheduling() { - if (!cProcessScheduler) - { - cProcessScheduler = new UserProcessScheduler(); - MUST_PASS(cProcessScheduler); - - kcout << "newoskrnl.exe: Team capacity: " << number(cProcessScheduler->CurrentTeam().AsArray().Capacity()) << endl; - } - SizeT ret = cProcessScheduler->Run(); return ret; } -- cgit v1.2.3