diff options
Diffstat (limited to 'dev/kernel/src/UserProcessScheduler.cc')
| -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"; |
