From db52d3d43c38e5de947cd5434808adb460820458 Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Wed, 6 Mar 2013 07:40:34 -0800 Subject: [PATCH] Quick and dirty attempt to delay loadmodule. --- Core/HLE/sceKernel.cpp | 4 ++-- Core/HLE/sceKernelThread.cpp | 8 ++++---- Core/HLE/sceKernelThread.h | 4 ++-- Core/HLE/sceUtility.cpp | 3 ++- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/Core/HLE/sceKernel.cpp b/Core/HLE/sceKernel.cpp index 06fe0bf0e..572581b67 100644 --- a/Core/HLE/sceKernel.cpp +++ b/Core/HLE/sceKernel.cpp @@ -621,8 +621,8 @@ const HLEFunction ThreadManForUser[] = {0x9fa03cd3,WrapI_I,"sceKernelDeleteThread"}, {0xBD123D9E,sceKernelDelaySysClockThread,"sceKernelDelaySysClockThread"}, {0x1181E963,sceKernelDelaySysClockThreadCB,"sceKernelDelaySysClockThreadCB"}, - {0xceadeb47,sceKernelDelayThread,"sceKernelDelayThread"}, - {0x68da9e36,sceKernelDelayThreadCB,"sceKernelDelayThreadCB"}, + {0xceadeb47,WrapI_U,"sceKernelDelayThread"}, + {0x68da9e36,WrapI_U,"sceKernelDelayThreadCB"}, {0xaa73c935,sceKernelExitThread,"sceKernelExitThread"}, {0x809ce29b,sceKernelExitDeleteThread,"sceKernelExitDeleteThread"}, {0x94aa61ee,sceKernelGetThreadCurrentPriority,"sceKernelGetThreadCurrentPriority"}, diff --git a/Core/HLE/sceKernelThread.cpp b/Core/HLE/sceKernelThread.cpp index 7643cb65c..6141993d6 100644 --- a/Core/HLE/sceKernelThread.cpp +++ b/Core/HLE/sceKernelThread.cpp @@ -1852,26 +1852,26 @@ void sceKernelChangeThreadPriority() } } -void sceKernelDelayThreadCB() +int sceKernelDelayThreadCB(u32 usec) { - u32 usec = PARAM(0); if (usec < 200) usec = 200; DEBUG_LOG(HLE,"sceKernelDelayThreadCB(%i usec)",usec); SceUID curThread = __KernelGetCurThread(); __KernelScheduleWakeup(curThread, usec); __KernelWaitCurThread(WAITTYPE_DELAY, curThread, 0, 0, true, "thread delayed"); + return 0; } -void sceKernelDelayThread() +int sceKernelDelayThread(u32 usec) { - u32 usec = PARAM(0); if (usec < 200) usec = 200; DEBUG_LOG(HLE,"sceKernelDelayThread(%i usec)",usec); SceUID curThread = __KernelGetCurThread(); __KernelScheduleWakeup(curThread, usec); __KernelWaitCurThread(WAITTYPE_DELAY, curThread, 0, 0, false, "thread delayed"); + return 0; } void sceKernelDelaySysClockThreadCB() diff --git a/Core/HLE/sceKernelThread.h b/Core/HLE/sceKernelThread.h index 228b14816..c2fd01e76 100644 --- a/Core/HLE/sceKernelThread.h +++ b/Core/HLE/sceKernelThread.h @@ -28,8 +28,8 @@ void sceKernelChangeThreadPriority(); int __KernelCreateThread(const char *threadName, SceUID moduleID, u32 entry, u32 prio, int stacksize, u32 attr, u32 optionAddr); int sceKernelCreateThread(const char *threadName, u32 entry, u32 prio, int stacksize, u32 attr, u32 optionAddr); -void sceKernelDelayThread(); -void sceKernelDelayThreadCB(); +int sceKernelDelayThread(u32 usec); +int sceKernelDelayThreadCB(u32 usec); void sceKernelDelaySysClockThread(); void sceKernelDelaySysClockThreadCB(); int sceKernelDeleteThread(int threadHandle); diff --git a/Core/HLE/sceUtility.cpp b/Core/HLE/sceUtility.cpp index 8a1fa235c..a63a6524e 100644 --- a/Core/HLE/sceUtility.cpp +++ b/Core/HLE/sceUtility.cpp @@ -105,7 +105,8 @@ u32 sceUtilityUnloadAvModule(u32 module) u32 sceUtilityLoadModule(u32 module) { DEBUG_LOG(HLE,"sceUtilityLoadModule(%i)", module); - hleReSchedule("utilityloadmodule"); + sceKernelDelayThread(500); + //hleReSchedule("utilityloadmodule"); return 0; }