summaryrefslogtreecommitdiff
path: root/src/core/hle/kernel/thread.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/hle/kernel/thread.cpp')
-rw-r--r--src/core/hle/kernel/thread.cpp21
1 files changed, 12 insertions, 9 deletions
diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp
index fc6c0bc85..1c32552b1 100644
--- a/src/core/hle/kernel/thread.cpp
+++ b/src/core/hle/kernel/thread.cpp
@@ -435,28 +435,31 @@ ResultCode Thread::Sleep(s64 nanoseconds) {
435 return RESULT_SUCCESS; 435 return RESULT_SUCCESS;
436} 436}
437 437
438ResultCode Thread::YieldSimple() { 438std::pair<ResultCode, bool> Thread::YieldSimple() {
439 bool is_redundant = false;
439 { 440 {
440 SchedulerLock lock(kernel); 441 SchedulerLock lock(kernel);
441 kernel.GlobalScheduler().YieldThread(this); 442 is_redundant = kernel.GlobalScheduler().YieldThread(this);
442 } 443 }
443 return RESULT_SUCCESS; 444 return {RESULT_SUCCESS, is_redundant};
444} 445}
445 446
446ResultCode Thread::YieldAndBalanceLoad() { 447std::pair<ResultCode, bool> Thread::YieldAndBalanceLoad() {
448 bool is_redundant = false;
447 { 449 {
448 SchedulerLock lock(kernel); 450 SchedulerLock lock(kernel);
449 kernel.GlobalScheduler().YieldThreadAndBalanceLoad(this); 451 is_redundant = kernel.GlobalScheduler().YieldThreadAndBalanceLoad(this);
450 } 452 }
451 return RESULT_SUCCESS; 453 return {RESULT_SUCCESS, is_redundant};
452} 454}
453 455
454ResultCode Thread::YieldAndWaitForLoadBalancing() { 456std::pair<ResultCode, bool> Thread::YieldAndWaitForLoadBalancing() {
457 bool is_redundant = false;
455 { 458 {
456 SchedulerLock lock(kernel); 459 SchedulerLock lock(kernel);
457 kernel.GlobalScheduler().YieldThreadAndWaitForLoadBalancing(this); 460 is_redundant = kernel.GlobalScheduler().YieldThreadAndWaitForLoadBalancing(this);
458 } 461 }
459 return RESULT_SUCCESS; 462 return {RESULT_SUCCESS, is_redundant};
460} 463}
461 464
462void Thread::AddSchedulingFlag(ThreadSchedFlags flag) { 465void Thread::AddSchedulingFlag(ThreadSchedFlags flag) {