summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/src/UserProcessScheduler.cc
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-05-15 21:25:00 +0200
committerAmlal El Mahrouss <amlal@nekernel.org>2025-05-15 21:25:00 +0200
commit2e7e91648ac419086686910e4b8b124041e14edf (patch)
tree0afb915a28f1b21441437e225d445faa8c96134f /dev/kernel/src/UserProcessScheduler.cc
parent19ba024998c64583116423ed61abd1eade0bf2ec (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/UserProcessScheduler.cc')
-rw-r--r--dev/kernel/src/UserProcessScheduler.cc31
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";