diff options
author | bunnei <bunneidev@gmail.com> | 2022-06-26 20:38:48 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-26 20:38:48 +0200 |
commit | abfd690601eaa567b60c5eb844a688fe85e7dcea (patch) | |
tree | bb7cc7e8746ffedb0f8ddf2ca82c19ae41f5c1be /src/core/hle/kernel/k_thread.cpp | |
parent | Merge pull request #8500 from liamwhite/poke (diff) | |
parent | kernel: make current thread pointer thread local (diff) | |
download | yuzu-abfd690601eaa567b60c5eb844a688fe85e7dcea.tar yuzu-abfd690601eaa567b60c5eb844a688fe85e7dcea.tar.gz yuzu-abfd690601eaa567b60c5eb844a688fe85e7dcea.tar.bz2 yuzu-abfd690601eaa567b60c5eb844a688fe85e7dcea.tar.lz yuzu-abfd690601eaa567b60c5eb844a688fe85e7dcea.tar.xz yuzu-abfd690601eaa567b60c5eb844a688fe85e7dcea.tar.zst yuzu-abfd690601eaa567b60c5eb844a688fe85e7dcea.zip |
Diffstat (limited to '')
-rw-r--r-- | src/core/hle/kernel/k_thread.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/core/hle/kernel/k_thread.cpp b/src/core/hle/kernel/k_thread.cpp index c0a091bb6..fa5352847 100644 --- a/src/core/hle/kernel/k_thread.cpp +++ b/src/core/hle/kernel/k_thread.cpp @@ -382,7 +382,7 @@ void KThread::FinishTermination() { for (std::size_t i = 0; i < static_cast<std::size_t>(Core::Hardware::NUM_CPU_CORES); ++i) { KThread* core_thread{}; do { - core_thread = kernel.Scheduler(i).GetCurrentThread(); + core_thread = kernel.Scheduler(i).GetSchedulerCurrentThread(); } while (core_thread == this); } } @@ -631,7 +631,7 @@ ResultCode KThread::SetCoreMask(s32 core_id_, u64 v_affinity_mask) { s32 thread_core; for (thread_core = 0; thread_core < static_cast<s32>(Core::Hardware::NUM_CPU_CORES); ++thread_core) { - if (kernel.Scheduler(thread_core).GetCurrentThread() == this) { + if (kernel.Scheduler(thread_core).GetSchedulerCurrentThread() == this) { thread_is_current = true; break; } @@ -756,7 +756,7 @@ void KThread::WaitUntilSuspended() { for (std::size_t i = 0; i < static_cast<std::size_t>(Core::Hardware::NUM_CPU_CORES); ++i) { KThread* core_thread{}; do { - core_thread = kernel.Scheduler(i).GetCurrentThread(); + core_thread = kernel.Scheduler(i).GetSchedulerCurrentThread(); } while (core_thread == this); } } @@ -822,7 +822,7 @@ ResultCode KThread::SetActivity(Svc::ThreadActivity activity) { // Check if the thread is currently running. // If it is, we'll need to retry. for (auto i = 0; i < static_cast<s32>(Core::Hardware::NUM_CPU_CORES); ++i) { - if (kernel.Scheduler(i).GetCurrentThread() == this) { + if (kernel.Scheduler(i).GetSchedulerCurrentThread() == this) { thread_is_current = true; break; } @@ -1175,6 +1175,10 @@ std::shared_ptr<Common::Fiber>& KThread::GetHostContext() { return host_context; } +void SetCurrentThread(KernelCore& kernel, KThread* thread) { + kernel.SetCurrentEmuThread(thread); +} + KThread* GetCurrentThreadPointer(KernelCore& kernel) { return kernel.GetCurrentEmuThread(); } |