summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2019-03-16 04:38:51 +0100
committerLioncash <mathew1800@gmail.com>2019-03-16 04:58:37 +0100
commit51d7f6bffcc0498a47abc7de27bf0906fc523dae (patch)
tree1b0860fc4bfe74197f4a714f549c74f28b4bcc95 /src
parentkernel/thread: Migrate WaitCurrentThread_Sleep into the Thread interface (diff)
downloadyuzu-51d7f6bffcc0498a47abc7de27bf0906fc523dae.tar
yuzu-51d7f6bffcc0498a47abc7de27bf0906fc523dae.tar.gz
yuzu-51d7f6bffcc0498a47abc7de27bf0906fc523dae.tar.bz2
yuzu-51d7f6bffcc0498a47abc7de27bf0906fc523dae.tar.lz
yuzu-51d7f6bffcc0498a47abc7de27bf0906fc523dae.tar.xz
yuzu-51d7f6bffcc0498a47abc7de27bf0906fc523dae.tar.zst
yuzu-51d7f6bffcc0498a47abc7de27bf0906fc523dae.zip
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/kernel/svc.cpp10
-rw-r--r--src/core/hle/kernel/thread.h5
2 files changed, 7 insertions, 8 deletions
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp
index bf77ce137..047fa0c19 100644
--- a/src/core/hle/kernel/svc.cpp
+++ b/src/core/hle/kernel/svc.cpp
@@ -1284,10 +1284,14 @@ static ResultCode StartThread(Handle thread_handle) {
/// Called when a thread exits
static void ExitThread() {
- LOG_TRACE(Kernel_SVC, "called, pc=0x{:08X}", Core::CurrentArmInterface().GetPC());
+ auto& system = Core::System::GetInstance();
- ExitCurrentThread();
- Core::System::GetInstance().PrepareReschedule();
+ LOG_TRACE(Kernel_SVC, "called, pc=0x{:08X}", system.CurrentArmInterface().GetPC());
+
+ auto* const current_thread = system.CurrentScheduler().GetCurrentThread();
+ current_thread->Stop();
+ system.CurrentScheduler().RemoveThread(current_thread);
+ system.PrepareReschedule();
}
/// Sleep the current thread
diff --git a/src/core/hle/kernel/thread.h b/src/core/hle/kernel/thread.h
index d7c7a31f7..ccdefeecc 100644
--- a/src/core/hle/kernel/thread.h
+++ b/src/core/hle/kernel/thread.h
@@ -463,9 +463,4 @@ private:
*/
Thread* GetCurrentThread();
-/**
- * Stops the current thread and removes it from the thread_list
- */
-void ExitCurrentThread();
-
} // namespace Kernel