diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-05-15 21:25:00 +0200 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@nekernel.org> | 2025-05-15 21:25:00 +0200 |
| commit | 2e7e91648ac419086686910e4b8b124041e14edf (patch) | |
| tree | 0afb915a28f1b21441437e225d445faa8c96134f /dev/kernel/src | |
| parent | 19ba024998c64583116423ed61abd1eade0bf2ec (diff) | |
feat(kernel/sched): fix overengineered and duplicate switch on ::Run
method.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/kernel/src')
| -rw-r--r-- | dev/kernel/src/UserProcessScheduler.cc | 31 |
1 files changed, 12 insertions, 19 deletions
diff --git a/dev/kernel/src/UserProcessScheduler.cc b/dev/kernel/src/UserProcessScheduler.cc index 1a208bae..24869d63 100644 --- a/dev/kernel/src/UserProcessScheduler.cc +++ b/dev/kernel/src/UserProcessScheduler.cc @@ -495,25 +495,18 @@ SizeT UserProcessScheduler::Run() noexcept { this->CurrentProcess() = process; - // tell helper to find a core to schedule on, otherwise run on this core directly. - if (!UserProcessHelper::Switch(process.StackFrame, process.ProcessId)) { - if (process.ProcessId == this->CurrentProcess().Leak().ProcessId && - process.PTime > (Int32) AffinityKind::kStandard) { - if (process.PTime < process.RTime) { - if (process.RTime < (Int32) AffinityKind::kVeryHigh) - process.PTime = (Int32) AffinityKind::kLowUsage; - else if (process.RTime < (Int32) AffinityKind::kHigh) - process.PTime = (Int32) AffinityKind::kStandard; - else if (process.RTime < (Int32) AffinityKind::kStandard) - process.PTime = (Int32) AffinityKind::kHigh; - - process.PTime = static_cast<Int32>(process.Affinity); - process.RTime = 0UL; - - } else { - ++process.RTime; - } - } + process.PTime = static_cast<Int32>(process.Affinity); + + if (process.PTime < process.RTime) { + if (process.RTime < (Int32) AffinityKind::kVeryHigh) + process.PTime = (Int32) AffinityKind::kLowUsage; + else if (process.RTime < (Int32) AffinityKind::kHigh) + process.PTime = (Int32) AffinityKind::kStandard; + else if (process.RTime < (Int32) AffinityKind::kStandard) + process.PTime = (Int32) AffinityKind::kHigh; + process.RTime = 0UL; + } else { + ++process.RTime; } } else { kout << process.Name << " won't be scheduled to run...\r"; |
