diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-10-20 17:53:37 +0200 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-10-20 17:53:37 +0200 |
| commit | 7764e88cd0032cd57fdc17a2906db9d8af9999e1 (patch) | |
| tree | a373ed0682c3161ee38b77089bc8fab821304a6b /dev/zka/src/UserProcessScheduler.cxx | |
| parent | 22e85ecdb17888268d32997b20e01cc98968cc3d (diff) | |
IMP: New implementations and improvements.
- Heap class allocation have been fixed.
- Scheduler allocation has been fixed.
- A new better flow for the kernel has been designed.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/zka/src/UserProcessScheduler.cxx')
| -rw-r--r-- | dev/zka/src/UserProcessScheduler.cxx | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/dev/zka/src/UserProcessScheduler.cxx b/dev/zka/src/UserProcessScheduler.cxx index d0236578..af9ab5d3 100644 --- a/dev/zka/src/UserProcessScheduler.cxx +++ b/dev/zka/src/UserProcessScheduler.cxx @@ -35,10 +35,12 @@ namespace Kernel STATIC UInt32 cLastExitCode = 0U; /***********************************************************************************/ - /// @brief User Process scheduler global object. + /// @brief User Process scheduler global and external reference of thread scheduler. /***********************************************************************************/ UserProcessScheduler* cProcessScheduler = nullptr; + EXTERN HardwareThreadScheduler* cHardwareThreadScheduler; + /// @brief Gets the last exit code. /// @note Not thread-safe. @@ -54,8 +56,15 @@ namespace Kernel Void UserProcess::Crash() { - if (*this->Name != 0) - kcout << this->Name << ": crashed, error id: " << number(kErrorProcessFault) << endl; + if (*this->Name != 0 && + *this->Name > 'A') +{ + kcout << this->Name << ": crashed, error id: " << number(kErrorProcessFault) << endl; +} + else + { + return; + } this->Exit(kErrorProcessFault); } @@ -505,11 +514,15 @@ namespace Kernel { if (!cProcessScheduler) { - cProcessScheduler = mm_new_class<UserProcessScheduler>(); - return Yes; + cProcessScheduler = new UserProcessScheduler(); } + + if (!cHardwareThreadScheduler) + { + cHardwareThreadScheduler = new HardwareThreadScheduler(); + } - return No; + return Yes; } /***********************************************************************************/ @@ -520,12 +533,12 @@ namespace Kernel SizeT UserProcessHelper::StartScheduling() { - kcout << "Sched: Trying to schedule processes...\r"; + kcout << "UserProcessScheduler: Trying to schedule user processes...\r"; if (!cProcessScheduler) return 0; - kcout << "Sched: Scheduling processes...\r"; + kcout << "UserProcessScheduler: Object is valid, scheduling user processes...\r"; SizeT ret = cProcessScheduler->Run(); return ret; |
