diff options
author | Zach Hilman <zachhilman@gmail.com> | 2018-11-22 06:33:53 +0100 |
---|---|---|
committer | Zach Hilman <zachhilman@gmail.com> | 2018-11-22 06:33:53 +0100 |
commit | 820d81b9a5392951c18daa5a47d6c0ffd28baa9b (patch) | |
tree | dab20f1ff49ab76cdcd511e189799f4d6e40677e /src/core/hle/kernel/thread.cpp | |
parent | svc: Implement yield types 0 and -1 (diff) | |
download | yuzu-820d81b9a5392951c18daa5a47d6c0ffd28baa9b.tar yuzu-820d81b9a5392951c18daa5a47d6c0ffd28baa9b.tar.gz yuzu-820d81b9a5392951c18daa5a47d6c0ffd28baa9b.tar.bz2 yuzu-820d81b9a5392951c18daa5a47d6c0ffd28baa9b.tar.lz yuzu-820d81b9a5392951c18daa5a47d6c0ffd28baa9b.tar.xz yuzu-820d81b9a5392951c18daa5a47d6c0ffd28baa9b.tar.zst yuzu-820d81b9a5392951c18daa5a47d6c0ffd28baa9b.zip |
Diffstat (limited to 'src/core/hle/kernel/thread.cpp')
-rw-r--r-- | src/core/hle/kernel/thread.cpp | 60 |
1 files changed, 0 insertions, 60 deletions
diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp index ddc4da1c0..4ffb76818 100644 --- a/src/core/hle/kernel/thread.cpp +++ b/src/core/hle/kernel/thread.cpp @@ -388,66 +388,6 @@ bool Thread::InvokeWakeupCallback(ThreadWakeupReason reason, SharedPtr<Thread> t return wakeup_callback(reason, std::move(thread), std::move(object), index); } -void Thread::YieldNormal() { - // Avoid yielding if the thread isn't even running. - if (status != ThreadStatus::Running) { - return; - } - - if (nominal_priority < THREADPRIO_COUNT) { - scheduler->RescheduleThread(this, nominal_priority); - scheduler->Reschedule(); - } -} - -void Thread::YieldWithLoadBalancing() { - auto priority = nominal_priority; - auto core = processor_id; - - // Avoid yielding if the thread isn't even running. - if (status != ThreadStatus::Running) { - Core::System::GetInstance().CpuCore(processor_id).PrepareReschedule(); - return; - } - - SharedPtr<Thread> next; - const auto& threads = scheduler->GetThreadList(); - - if (priority < THREADPRIO_COUNT) { - // Reschedule thread to end of queue. - scheduler->RescheduleThread(this, priority); - - const auto iter = std::find_if(threads.begin(), threads.end(), - [&priority](const SharedPtr<Thread>& thread) { - return thread->GetNominalPriority() == priority; - }); - - if (iter != threads.end()) - next = iter->get(); - } - - Thread* suggested_thread = nullptr; - - for (int i = 0; i < 4; ++i) { - if (i == core) - continue; - - const auto res = - Core::System::GetInstance().CpuCore(i).Scheduler().GetNextSuggestedThread(core); - if (res != nullptr) { - suggested_thread = res; - break; - } - } - - if (suggested_thread != nullptr) - suggested_thread->ChangeCore(core, suggested_thread->GetAffinityMask()); -} - -void Thread::YieldAndWaitForLoadBalancing() { - UNIMPLEMENTED_MSG("Wait for load balancing thread yield type is not implemented!"); -} - //////////////////////////////////////////////////////////////////////////////////////////////////// /** |