summaryrefslogtreecommitdiff
path: root/src/core/hle
diff options
context:
space:
mode:
authorGravatar bunnei2018-05-05 23:54:43 -0400
committerGravatar bunnei2018-05-10 19:34:52 -0400
commit8aa5d25f826c8969a1e9938d8c8e12fa6df8be82 (patch)
tree5e0832f4382787a889d3f0ed1ec75175a6ac8071 /src/core/hle
parentsvc: Implement GetThreadCoreMask and SetThreadCoreMask. (diff)
downloadyuzu-8aa5d25f826c8969a1e9938d8c8e12fa6df8be82.tar.gz
yuzu-8aa5d25f826c8969a1e9938d8c8e12fa6df8be82.tar.xz
yuzu-8aa5d25f826c8969a1e9938d8c8e12fa6df8be82.zip
threading: Reschedule only on cores that are necessary.
Diffstat (limited to 'src/core/hle')
-rw-r--r--src/core/hle/kernel/svc.cpp4
-rw-r--r--src/core/hle/kernel/thread.cpp2
2 files changed, 3 insertions, 3 deletions
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp
index 9050ff3de..89c3e240a 100644
--- a/src/core/hle/kernel/svc.cpp
+++ b/src/core/hle/kernel/svc.cpp
@@ -625,7 +625,7 @@ static ResultCode WaitProcessWideKeyAtomic(VAddr mutex_addr, VAddr condition_var
625 625
626 // Note: Deliberately don't attempt to inherit the lock owner's priority. 626 // Note: Deliberately don't attempt to inherit the lock owner's priority.
627 627
628 Core::System::GetInstance().PrepareReschedule(); 628 Core::System::GetInstance().CpuCore(current_thread->processor_id).PrepareReschedule();
629 return RESULT_SUCCESS; 629 return RESULT_SUCCESS;
630} 630}
631 631
@@ -678,7 +678,7 @@ static ResultCode SignalProcessWideKey(VAddr condition_variable_addr, s32 target
678 678
679 owner->AddMutexWaiter(thread); 679 owner->AddMutexWaiter(thread);
680 680
681 Core::System::GetInstance().PrepareReschedule(); 681 Core::System::GetInstance().CpuCore(thread->processor_id).PrepareReschedule();
682 } 682 }
683 683
684 ++processed; 684 ++processed;
diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp
index c370776e8..31cf1551d 100644
--- a/src/core/hle/kernel/thread.cpp
+++ b/src/core/hle/kernel/thread.cpp
@@ -189,7 +189,7 @@ void Thread::ResumeFromWait() {
189 189
190 status = THREADSTATUS_READY; 190 status = THREADSTATUS_READY;
191 scheduler->ScheduleThread(this, current_priority); 191 scheduler->ScheduleThread(this, current_priority);
192 Core::System::GetInstance().PrepareReschedule(); 192 Core::System::GetInstance().CpuCore(processor_id).PrepareReschedule();
193} 193}
194 194
195/** 195/**