|
|
|
@ -960,11 +960,6 @@ static void ExitThread() { |
|
|
|
static void SleepThread(s64 nanoseconds) { |
|
|
|
LOG_TRACE(Kernel_SVC, "called nanoseconds={}", 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 && !Core::System::GetInstance().CurrentScheduler().HaveReadyThreads()) |
|
|
|
return; |
|
|
|
|
|
|
|
enum class SleepType : s64 { |
|
|
|
YieldWithoutLoadBalancing = 0, |
|
|
|
YieldWithLoadBalancing = -1, |
|
|
|
@ -995,7 +990,7 @@ static void SleepThread(s64 nanoseconds) { |
|
|
|
} |
|
|
|
|
|
|
|
// Reschedule all CPU cores
|
|
|
|
for (std::size_t i = 0; i < 4; ++i) |
|
|
|
for (std::size_t i = 0; i < Core::NUM_CPU_CORES; ++i) |
|
|
|
Core::System::GetInstance().CpuCore(i).PrepareReschedule(); |
|
|
|
} |
|
|
|
|
|
|
|
|