svc: Implement svcExitThread.

This commit is contained in:
bunnei 2017-12-31 16:11:27 -05:00
parent 9d0c3bda7f
commit 45debfe4fd

View File

@ -295,6 +295,14 @@ static ResultCode StartThread(Handle thread_handle) {
return RESULT_SUCCESS; return RESULT_SUCCESS;
} }
/// Called when a thread exits
static void ExitThread() {
LOG_TRACE(Kernel_SVC, "called, pc=0x%08X", Core::CPU().GetPC());
Kernel::ExitCurrentThread();
Core::System::GetInstance().PrepareReschedule();
}
/// Sleep the current thread /// Sleep the current thread
static void SleepThread(s64 nanoseconds) { static void SleepThread(s64 nanoseconds) {
LOG_TRACE(Kernel_SVC, "called nanoseconds=%lld", nanoseconds); LOG_TRACE(Kernel_SVC, "called nanoseconds=%lld", nanoseconds);
@ -346,7 +354,7 @@ static const FunctionDef SVC_Table[] = {
{0x07, nullptr, "svcExitProcess"}, {0x07, nullptr, "svcExitProcess"},
{0x08, HLE::Wrap<CreateThread>, "svcCreateThread"}, {0x08, HLE::Wrap<CreateThread>, "svcCreateThread"},
{0x09, HLE::Wrap<StartThread>, "svcStartThread"}, {0x09, HLE::Wrap<StartThread>, "svcStartThread"},
{0x0A, nullptr, "svcExitThread"}, {0x0A, HLE::Wrap<ExitThread>, "svcExitThread"},
{0x0B, HLE::Wrap<SleepThread>, "svcSleepThread"}, {0x0B, HLE::Wrap<SleepThread>, "svcSleepThread"},
{0x0C, HLE::Wrap<GetThreadPriority>, "svcGetThreadPriority"}, {0x0C, HLE::Wrap<GetThreadPriority>, "svcGetThreadPriority"},
{0x0D, HLE::Wrap<SetThreadPriority>, "svcSetThreadPriority"}, {0x0D, HLE::Wrap<SetThreadPriority>, "svcSetThreadPriority"},