Merge pull request #2410 from Subv/sleepthread

Don't yield execution in SleepThread(0) if there are no available threads to run
This commit is contained in:
bunnei 2017-01-06 22:01:33 -05:00 committed by GitHub
commit b5eac78b43
3 changed files with 14 additions and 0 deletions

View file

@ -849,6 +849,11 @@ static ResultCode CancelTimer(Kernel::Handle handle) {
static void SleepThread(s64 nanoseconds) {
LOG_TRACE(Kernel_SVC, "called nanoseconds=%lld", nanoseconds);
// Don't attempt to yield execution if there are no available threads to run,
// this way we avoid a useless reschedule to the idle thread.
if (nanoseconds == 0 && !Kernel::HaveReadyThreads())
return;
// Sleep current thread and check for next thread to schedule
Kernel::WaitCurrentThread_Sleep();