protected internal virtual int hleKernelEnableDisableSubIntr(int intrNumber, int subIntrNumber, bool enabled) { //if (log.DebugEnabled) { Console.WriteLine(string.Format("sceKernel{0}SubIntr({1:D}, {2:D})", enabled ? "Enable" : "Disable", intrNumber, subIntrNumber)); } if (intrNumber < 0 || intrNumber >= IntrManager.PSP_NUMBER_INTERRUPTS) { return(-1); } if (intrHandlers[intrNumber] == null) { return(-1); } SubIntrHandler subIntrHandler = intrHandlers[intrNumber].getSubIntrHandler(subIntrNumber); if (subIntrHandler == null) { return(-1); } subIntrHandler.Enabled = enabled; return(0); }
public virtual int sceKernelRegisterSubIntrHandler(int intrNumber, int subIntrNumber, TPointer handlerAddress, int handlerArgument) { if (intrNumber < 0 || intrNumber >= IntrManager.PSP_NUMBER_INTERRUPTS || subIntrNumber < 0) { return(SceKernelErrors.ERROR_KERNEL_INVALID_INTR_NUMBER); } if (intrHandlers[intrNumber] == null) { IntrHandler intrHandler = new IntrHandler(); intrHandlers[intrNumber] = intrHandler; addInterruptHandler(intrNumber, intrHandler); } else if (intrHandlers[intrNumber].getSubIntrHandler(subIntrNumber) != null) { return(SceKernelErrors.ERROR_KERNEL_SUBINTR_ALREADY_REGISTERED); } SubIntrHandler subIntrHandler = new SubIntrHandler(handlerAddress.Address, subIntrNumber, handlerArgument); subIntrHandler.Enabled = false; intrHandlers[intrNumber].addSubIntrHandler(subIntrNumber, subIntrHandler); return(0); }