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.
master
Lioncash 2019-03-15 23:38:51 +07:00
parent c892cf01fa
commit 51d7f6bffc
2 changed files with 7 additions and 8 deletions

@ -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

@ -463,9 +463,4 @@ private:
*/
Thread* GetCurrentThread();
/**
* Stops the current thread and removes it from the thread_list
*/
void ExitCurrentThread();
} // namespace Kernel