Пример #1
0
void __KernelInit()
{
    if (kernelRunning)
    {
        ERROR_LOG(HLE, "Can't init kernel when kernel is running");
        return;
    }

    __KernelTimeInit();
    __InterruptsInit();
    __KernelMemoryInit();
    __KernelThreadingInit();
    __KernelAlarmInit();
    __KernelVTimerInit();
    __KernelEventFlagInit();
    __KernelMbxInit();
    __KernelMutexInit();
    __KernelSemaInit();
    __IoInit();
    __JpegInit();
    __AudioInit();
    __SasInit();
    __AtracInit();
    __CccInit();
    __DisplayInit();
    __GeInit();
    __PowerInit();
    __UtilityInit();
    __UmdInit();
    __MpegInit();
    __PsmfInit();
    __CtrlInit();
    __RtcInit();
    __SslInit();
    __ImposeInit();
    __UsbInit();
    __FontInit();
    __NetInit();
    __VaudioInit();
    __CheatInit();

    SaveState::Init();  // Must be after IO, as it may create a directory

    // "Internal" PSP libraries
    __PPGeInit();

    kernelRunning = true;
    INFO_LOG(HLE, "Kernel initialized.");
}
Пример #2
0
SceUID __KernelSetAlarm(u64 ticks, u32 handlerPtr, u32 commonPtr)
{
	if (!alarmInitComplete)
		__KernelAlarmInit();

	Alarm *alarm = new Alarm;
	SceUID uid = kernelObjects.Create(alarm);

	alarm->alm.size = sizeof(NativeAlarm);
	alarm->alm.schedule = CoreTiming::GetTicks() + ticks;
	alarm->alm.handlerPtr = handlerPtr;
	alarm->alm.commonPtr = commonPtr;

	u32 error = __RegisterSubInterruptHandler(PSP_SYSTIMER0_INTR, uid, new AlarmIntrHandler(alarm));
	if (error != 0)
		return error;

	__KernelScheduleAlarm(alarm, (int) ticks);
	return uid;
}