sceKernelDelaySysClockThread() cleanup.
It doesn't wait either of course.
This commit is contained in:
parent
93b461774a
commit
252bf04c64
3 changed files with 22 additions and 24 deletions
|
@ -700,10 +700,10 @@ const HLEFunction ThreadManForUser[] =
|
|||
{0x71bc9871,WrapI_II<sceKernelChangeThreadPriority>,"sceKernelChangeThreadPriority"},
|
||||
{0x446D8DE6,WrapI_CUUIUU<sceKernelCreateThread>,"sceKernelCreateThread"},
|
||||
{0x9fa03cd3,WrapI_I<sceKernelDeleteThread>,"sceKernelDeleteThread"},
|
||||
{0xBD123D9E,sceKernelDelaySysClockThread,"sceKernelDelaySysClockThread"},
|
||||
{0x1181E963,sceKernelDelaySysClockThreadCB,"sceKernelDelaySysClockThreadCB"},
|
||||
{0xceadeb47,WrapI_U<sceKernelDelayThread>,"sceKernelDelayThread", HLE_NOT_DISPATCH_SUSPENDED},
|
||||
{0x68da9e36,WrapI_U<sceKernelDelayThreadCB>,"sceKernelDelayThreadCB", HLE_NOT_DISPATCH_SUSPENDED},
|
||||
{0xBD123D9E,WrapI_U<sceKernelDelaySysClockThread>, "sceKernelDelaySysClockThread", HLE_NOT_DISPATCH_SUSPENDED},
|
||||
{0x1181E963,WrapI_U<sceKernelDelaySysClockThreadCB>, "sceKernelDelaySysClockThreadCB", HLE_NOT_DISPATCH_SUSPENDED},
|
||||
{0xceadeb47,WrapI_U<sceKernelDelayThread>, "sceKernelDelayThread", HLE_NOT_DISPATCH_SUSPENDED},
|
||||
{0x68da9e36,WrapI_U<sceKernelDelayThreadCB>, "sceKernelDelayThreadCB", HLE_NOT_DISPATCH_SUSPENDED},
|
||||
{0xaa73c935,WrapV_I<sceKernelExitThread>,"sceKernelExitThread"},
|
||||
{0x809ce29b,WrapV_I<sceKernelExitDeleteThread>,"sceKernelExitDeleteThread"},
|
||||
{0x94aa61ee,sceKernelGetThreadCurrentPriority,"sceKernelGetThreadCurrentPriority"},
|
||||
|
|
|
@ -2410,44 +2410,42 @@ int sceKernelDelayThread(u32 usec)
|
|||
return 0;
|
||||
}
|
||||
|
||||
void sceKernelDelaySysClockThreadCB()
|
||||
int sceKernelDelaySysClockThreadCB(u32 sysclockAddr)
|
||||
{
|
||||
u32 sysclockAddr = PARAM(0);
|
||||
if (!Memory::IsValidAddress(sysclockAddr)) {
|
||||
ERROR_LOG(HLE, "sceKernelDelaySysClockThread(%08x) - bad pointer", sysclockAddr);
|
||||
RETURN(-1);
|
||||
return;
|
||||
PSPPointer<SceKernelSysClock> sysclock;
|
||||
sysclock = sysclockAddr;
|
||||
if (!sysclock.IsValid()) {
|
||||
ERROR_LOG(HLE, "sceKernelDelaySysClockThreadCB(%08x) - bad pointer", sysclockAddr);
|
||||
return -1;
|
||||
}
|
||||
SceKernelSysClock sysclock;
|
||||
Memory::ReadStruct(sysclockAddr, &sysclock);
|
||||
|
||||
// TODO: Which unit?
|
||||
u64 usec = sysclock.lo | ((u64)sysclock.hi << 32);
|
||||
DEBUG_LOG(HLE, "sceKernelDelaySysClockThread(%08x (%llu))", sysclockAddr, usec);
|
||||
u64 usec = sysclock->lo | ((u64)sysclock->hi << 32);
|
||||
DEBUG_LOG(HLE, "sceKernelDelaySysClockThreadCB(%08x (%llu))", sysclockAddr, usec);
|
||||
|
||||
SceUID curThread = __KernelGetCurThread();
|
||||
__KernelScheduleWakeup(curThread, __KernelDelayThreadUs(usec));
|
||||
__KernelWaitCurThread(WAITTYPE_DELAY, curThread, 0, 0, true, "thread delayed");
|
||||
return 0;
|
||||
}
|
||||
|
||||
void sceKernelDelaySysClockThread()
|
||||
int sceKernelDelaySysClockThread(u32 sysclockAddr)
|
||||
{
|
||||
u32 sysclockAddr = PARAM(0);
|
||||
if (!Memory::IsValidAddress(sysclockAddr)) {
|
||||
PSPPointer<SceKernelSysClock> sysclock;
|
||||
sysclock = sysclockAddr;
|
||||
if (!sysclock.IsValid()) {
|
||||
ERROR_LOG(HLE, "sceKernelDelaySysClockThread(%08x) - bad pointer", sysclockAddr);
|
||||
RETURN(-1);
|
||||
return;
|
||||
return -1;
|
||||
}
|
||||
SceKernelSysClock sysclock;
|
||||
Memory::ReadStruct(sysclockAddr, &sysclock);
|
||||
|
||||
// TODO: Which unit?
|
||||
u64 usec = sysclock.lo | ((u64)sysclock.hi << 32);
|
||||
u64 usec = sysclock->lo | ((u64)sysclock->hi << 32);
|
||||
DEBUG_LOG(HLE, "sceKernelDelaySysClockThread(%08x (%llu))", sysclockAddr, usec);
|
||||
|
||||
SceUID curThread = __KernelGetCurThread();
|
||||
__KernelScheduleWakeup(curThread, __KernelDelayThreadUs(usec));
|
||||
__KernelWaitCurThread(WAITTYPE_DELAY, curThread, 0, 0, false, "thread delayed");
|
||||
return 0;
|
||||
}
|
||||
|
||||
u32 __KernelGetThreadPrio(SceUID id)
|
||||
|
|
|
@ -29,8 +29,8 @@ int __KernelCreateThread(const char *threadName, SceUID moduleID, u32 entry, u32
|
|||
int sceKernelCreateThread(const char *threadName, u32 entry, u32 prio, int stacksize, u32 attr, u32 optionAddr);
|
||||
int sceKernelDelayThread(u32 usec);
|
||||
int sceKernelDelayThreadCB(u32 usec);
|
||||
void sceKernelDelaySysClockThread();
|
||||
void sceKernelDelaySysClockThreadCB();
|
||||
int sceKernelDelaySysClockThread(u32 sysclockAddr);
|
||||
int sceKernelDelaySysClockThreadCB(u32 sysclockAddr);
|
||||
int sceKernelDeleteThread(int threadHandle);
|
||||
void sceKernelExitDeleteThread(int exitStatus);
|
||||
void sceKernelExitThread(int exitStatus);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue