diff options
| author | Amlal <amlal.elmahrouss@icloud.com> | 2025-01-27 15:09:24 +0100 |
|---|---|---|
| committer | Amlal <amlal.elmahrouss@icloud.com> | 2025-01-27 15:09:24 +0100 |
| commit | a4d64ddc1375f40a4c72bd2ba9326df04058c9bb (patch) | |
| tree | bee09c5cd413151a84183c1ebc8ca81ab7c3c88b /dev/Kernel/src/UserProcessScheduler.cc | |
| parent | 974d89be4047f92b9f55e3e8821f4b89c9ab945b (diff) | |
Bump and fixes.
Signed-off-by: Amlal <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/Kernel/src/UserProcessScheduler.cc')
| -rw-r--r-- | dev/Kernel/src/UserProcessScheduler.cc | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/dev/Kernel/src/UserProcessScheduler.cc b/dev/Kernel/src/UserProcessScheduler.cc index a0b160ad..dbe0471b 100644 --- a/dev/Kernel/src/UserProcessScheduler.cc +++ b/dev/Kernel/src/UserProcessScheduler.cc @@ -400,20 +400,25 @@ namespace Kernel return Yes; } + /// @brief Is it a user scheduler? + const Bool UserProcessScheduler::IsUser() { return Yes; } + /// @brief Is it a kernel scheduler? + const Bool UserProcessScheduler::IsKernel() { return No; } + /// @brief Is it a SMP scheduler? + const Bool UserProcessScheduler::HasMP() { - MUST_PASS(kHandoverHeader); - return kHandoverHeader->f_HardwareTables.f_MultiProcessingEnabled; + return Yes; } /***********************************************************************************/ @@ -423,13 +428,13 @@ namespace Kernel const SizeT UserProcessScheduler::Run() noexcept { - SizeT process_index = 0; //! we store this guy to tell the scheduler how many - //! things we have scheduled. + SizeT process_index = 0UL; //! we store this guy to tell the scheduler how many + //! things we have scheduled. if (mTeam.mProcessCount < 1) { kcout << "UserProcessScheduler::Run(): This team doesn't have any process!\r"; - return 0; + return 0UL; } kcout << "UserProcessScheduler::Run(): This team has a process capacity of: " << number(mTeam.mProcessList.Capacity()) << endl; @@ -449,10 +454,16 @@ namespace Kernel kcout << "Switch to: '" << process.Name << "'.\r"; // tell helper to find a core to schedule on. - if (!UserProcessHelper::Switch(process.Image.fCode, &process.StackReserve[process.StackSize - 1], process.StackFrame, - process.ProcessId)) + BOOL ret = UserProcessHelper::Switch(process.Image.fCode, &process.StackReserve[process.StackSize - 1], process.StackFrame, + process.ProcessId); + + if (!ret) { - kcout << "Invalid process (UH OH)\r"; + if (process.Affinity == AffinityKind::kRealTime) + continue; + + kcout << "The process: " << process.Name << ", is not valid! Crashing it...\r"; + process.Crash(); } } |
