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 | |
| parent | 974d89be4047f92b9f55e3e8821f4b89c9ab945b (diff) | |
Bump and fixes.
Signed-off-by: Amlal <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/Kernel/src')
| -rw-r--r-- | dev/Kernel/src/Semaphore.cc | 4 | ||||
| -rw-r--r-- | dev/Kernel/src/UserProcessScheduler.cc | 27 |
2 files changed, 21 insertions, 10 deletions
diff --git a/dev/Kernel/src/Semaphore.cc b/dev/Kernel/src/Semaphore.cc index 07434e75..d0498b28 100644 --- a/dev/Kernel/src/Semaphore.cc +++ b/dev/Kernel/src/Semaphore.cc @@ -16,7 +16,7 @@ namespace Kernel { if (fLockingProcess) { - fLockingProcess = UserProcess(); + fLockingProcess = UserProcess(); fLockingProcess.Status = ProcessStatusKind::kFrozen; return Yes; } @@ -42,7 +42,7 @@ namespace Kernel /***********************************************************************************/ Bool Semaphore::IsLocked() const { - return fLockingProcess->Status == ProcessStatusKind::kRunning; + return fLockingProcess.Status == ProcessStatusKind::kRunning; } /***********************************************************************************/ 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(); } } |
