diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-09-04 12:56:23 +0200 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-09-04 12:56:23 +0200 |
| commit | a0a90c80e5dd17df8f609aebc253b4bf9147f90f (patch) | |
| tree | 459f98ea125db490e887bd85b38fd9165a9491b4 /dev/ZKA/Sources/UserProcessScheduler.cxx | |
| parent | cc9ce57cac59bd443e2319e3b8f427172b93f7da (diff) | |
Created a new branch for the overhaul project.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/ZKA/Sources/UserProcessScheduler.cxx')
| -rw-r--r-- | dev/ZKA/Sources/UserProcessScheduler.cxx | 29 |
1 files changed, 14 insertions, 15 deletions
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; } |
