summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Lioncash2019-03-15 23:38:51 -0400
committerGravatar Lioncash2019-03-15 23:58:37 -0400
commit51d7f6bffcc0498a47abc7de27bf0906fc523dae (patch)
tree1b0860fc4bfe74197f4a714f549c74f28b4bcc95 /src
parentkernel/thread: Migrate WaitCurrentThread_Sleep into the Thread interface (diff)
downloadyuzu-51d7f6bffcc0498a47abc7de27bf0906fc523dae.tar.gz
yuzu-51d7f6bffcc0498a47abc7de27bf0906fc523dae.tar.xz
yuzu-51d7f6bffcc0498a47abc7de27bf0906fc523dae.zip
kernel/thread: Move thread exiting logic from ExitCurrentThread to svcExitThread
Puts the operation on global state in the same places as the rest of the svc calls.
Diffstat (limited to '')
-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) {
1284 1284
1285/// Called when a thread exits 1285/// Called when a thread exits
1286static void ExitThread() { 1286static void ExitThread() {
1287 LOG_TRACE(Kernel_SVC, "called, pc=0x{:08X}", Core::CurrentArmInterface().GetPC()); 1287 auto& system = Core::System::GetInstance();
1288 1288
1289 ExitCurrentThread(); 1289 LOG_TRACE(Kernel_SVC, "called, pc=0x{:08X}", system.CurrentArmInterface().GetPC());
1290 Core::System::GetInstance().PrepareReschedule(); 1290
1291 auto* const current_thread = system.CurrentScheduler().GetCurrentThread();
1292 current_thread->Stop();
1293 system.CurrentScheduler().RemoveThread(current_thread);
1294 system.PrepareReschedule();
1291} 1295}
1292 1296
1293/// Sleep the current thread 1297/// 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:
463 */ 463 */
464Thread* GetCurrentThread(); 464Thread* GetCurrentThread();
465 465
466/**
467 * Stops the current thread and removes it from the thread_list
468 */
469void ExitCurrentThread();
470
471} // namespace Kernel 466} // namespace Kernel