From a779645152ade3389bb87174225525cffa2a4f20 Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Sun, 26 May 2013 10:17:59 -0700 Subject: [PATCH] Wrap sceKernelGetThreadExitStatus(). So it's usable internally too. --- Core/HLE/sceKernel.cpp | 2 +- Core/HLE/sceKernelThread.cpp | 9 ++++----- Core/HLE/sceKernelThread.h | 2 +- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/Core/HLE/sceKernel.cpp b/Core/HLE/sceKernel.cpp index 7371906bb8..e5957f6db5 100644 --- a/Core/HLE/sceKernel.cpp +++ b/Core/HLE/sceKernel.cpp @@ -687,7 +687,7 @@ const HLEFunction ThreadManForUser[] = {0x809ce29b,WrapV_I,"sceKernelExitDeleteThread"}, {0x94aa61ee,sceKernelGetThreadCurrentPriority,"sceKernelGetThreadCurrentPriority"}, {0x293b45b8,WrapI_V,"sceKernelGetThreadId"}, - {0x3B183E26,sceKernelGetThreadExitStatus,"sceKernelGetThreadExitStatus"}, + {0x3B183E26,WrapI_I,"sceKernelGetThreadExitStatus"}, {0x52089CA1,sceKernelGetThreadStackFreeSize,"sceKernelGetThreadStackFreeSize"}, {0xFFC36A14,WrapU_UU,"sceKernelReferThreadRunStatus"}, {0x17c1684e,WrapU_UU,"sceKernelReferThreadStatus"}, diff --git a/Core/HLE/sceKernelThread.cpp b/Core/HLE/sceKernelThread.cpp index 86efa641c4..f301befbc6 100644 --- a/Core/HLE/sceKernelThread.cpp +++ b/Core/HLE/sceKernelThread.cpp @@ -1256,9 +1256,8 @@ u32 sceKernelReferThreadRunStatus(u32 threadID, u32 statusPtr) return 0; } -void sceKernelGetThreadExitStatus() +int sceKernelGetThreadExitStatus(SceUID threadID) { - SceUID threadID = PARAM(0); if (threadID == 0) threadID = __KernelGetCurThread(); @@ -1269,17 +1268,17 @@ void sceKernelGetThreadExitStatus() if (t->nt.status == THREADSTATUS_DORMANT) // TODO: can be dormant before starting, too, need to avoid that { DEBUG_LOG(HLE,"sceKernelGetThreadExitStatus(%i)", threadID); - RETURN(t->nt.exitStatus); + return t->nt.exitStatus; } else { - RETURN(SCE_KERNEL_ERROR_NOT_DORMANT); + return SCE_KERNEL_ERROR_NOT_DORMANT; } } else { ERROR_LOG(HLE,"sceKernelGetThreadExitStatus Error %08x", error); - RETURN(SCE_KERNEL_ERROR_UNKNOWN_THID); + return SCE_KERNEL_ERROR_UNKNOWN_THID; } } diff --git a/Core/HLE/sceKernelThread.h b/Core/HLE/sceKernelThread.h index cccfe04ea1..5e14067d1a 100644 --- a/Core/HLE/sceKernelThread.h +++ b/Core/HLE/sceKernelThread.h @@ -56,7 +56,7 @@ int sceKernelSleepThreadCB(); int sceKernelTerminateDeleteThread(int threadno); int sceKernelTerminateThread(SceUID threadID); int sceKernelWaitThreadEndCB(SceUID threadID, u32 timeoutPtr); -void sceKernelGetThreadExitStatus(); +int sceKernelGetThreadExitStatus(SceUID threadID); u32 sceKernelGetThreadmanIdType(u32); u32 sceKernelGetThreadmanIdList(u32 type, u32 readBufPtr, u32 readBufSize, u32 idCountPtr); u32 sceKernelExtendThreadStack(u32 size, u32 entryAddr, u32 entryParameter);