aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/svc.cpp
diff options
context:
space:
mode:
authorZach Hilman <zachhilman@gmail.com>2018-12-03 17:29:21 -0500
committerZach Hilman <zachhilman@gmail.com>2018-12-03 17:29:30 -0500
commitb5af41a07bebc0a378428e7d7ddc68c9c750d2d1 (patch)
tree97d4e53060fda78d6445ddd99ad24b36b38cec14 /src/core/hle/kernel/svc.cpp
parent3476830b26b61410b633c827e985bffa1dc52528 (diff)
scheduler: Only work steal higher priority threads from other cores
Diffstat (limited to 'src/core/hle/kernel/svc.cpp')
-rw-r--r--src/core/hle/kernel/svc.cpp16
1 files changed, 6 insertions, 10 deletions
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp
index c119f7be1..fabdedd3d 100644
--- a/src/core/hle/kernel/svc.cpp
+++ b/src/core/hle/kernel/svc.cpp
@@ -984,20 +984,16 @@ static void SleepThread(s64 nanoseconds) {
scheduler.YieldAndWaitForLoadBalancing(GetCurrentThread());
break;
default:
- UNREACHABLE_MSG(
- "Unimplemented sleep yield type '{:016X}'! Falling back to forced reschedule...",
- nanoseconds);
+ UNREACHABLE_MSG("Unimplemented sleep yield type '{:016X}'!", nanoseconds);
}
+ } else {
+ // Sleep current thread and check for next thread to schedule
+ WaitCurrentThread_Sleep();
- nanoseconds = 0;
+ // Create an event to wake the thread up after the specified nanosecond delay has passed
+ GetCurrentThread()->WakeAfterDelay(nanoseconds);
}
- // Sleep current thread and check for next thread to schedule
- WaitCurrentThread_Sleep();
-
- // Create an event to wake the thread up after the specified nanosecond delay has passed
- GetCurrentThread()->WakeAfterDelay(nanoseconds);
-
Core::System::GetInstance().PrepareReschedule();
}