Example #1
0
        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);
        }
Example #2
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);
        }