static int scheduleTestFunc1(SceSize argSize, void* argPointer) { u32 bits = 0xDEADBEEF; SceUInt timeout = 5000; schedf("T1B"); int result = sceKernelWaitEventFlagCB(*(int*) argPointer, 0x00FF, PSP_EVENT_WAITOR | PSP_EVENT_WAITCLEAR, &bits, &timeout); schedf("T1D (result=%08x, bits=%08x) ", result, (uint) bits); return 0; }
static int scheduleTestFunc3(SceSize argSize, void* argPointer) { int result = 0x800201A8; u32 bits = 0xDEADBEEF; SceUInt timeout; schedf("T3B"); while (result == 0x800201A8) { timeout = 5; result = sceKernelWaitEventFlagCB(*(int*) argPointer, 0xFFFF, PSP_EVENT_WAITOR | PSP_EVENT_WAITCLEAR, &bits, &timeout); } schedf("T3D (result=%08x, bits=%08x) ", result, (uint) bits); return 0; }
//Subroutine sceUmd_98AFBD10 - Address 0x00000BE8 - Aliases: sceUmdUser_4A9E5E29 s32 sceUmdWaitDriveStatCB(u32 umdState, u32 timeout) { s32 oldK1; SceUID eventId; SceUInt *pTimeout; u32 outBits; s32 status; oldK1 = pspShiftK1(); eventId = sceUmdGetUserEventFlagId(); if (!(umdState & UMD_SUPPORTED_WAIT_DRIVE_STATES)) return SCE_ERROR_ERRNO_INVALID_ARGUMENT; if (timeout != 0) pTimeout = &timeout; else pTimeout = NULL; status = sceKernelWaitEventFlagCB(eventId, umdState, SCE_KERNEL_EW_OR, &outBits, pTimeout); pspSetK1(oldK1); return status; }