Line 516: |
Line 516: |
| | style="background: green" | Yes | | | style="background: green" | Yes |
| | style="background: green" | Yes | | | style="background: green" | Yes |
− | | Result [[#Interrupt Handling|BindInterrupt]](Interrupt name, Handle syncObject, s32 priority, bool isLevelHighActive) | + | | Result [[#Interrupt Handling|BindInterrupt]](Interrupt name, Handle eventOrSemaphore, s32 priority, bool isLevelHighActive) |
| | | | | |
| |- | | |- |
Line 523: |
Line 523: |
| | style="background: green" | Yes | | | style="background: green" | Yes |
| | style="background: green" | Yes | | | style="background: green" | Yes |
− | | Result UnbindInterrupt(Interrupt name, Handle syncObject) | + | | Result UnbindInterrupt(Interrupt name, Handle eventOrSemaphore) |
| | | | | |
| |- | | |- |
Line 1,148: |
Line 1,148: |
| = Interrupt Handling = | | = Interrupt Handling = |
| | | |
− | svcBindInterrupt registers the given event corresponding to the handle to the global [[ARM11_Interrupts#Interrupt_Table_.28New3DS.29|"interrupt table"]] for the given interrupt ID. Interrupts 0-14 and 16-31 can never be mapped regardless of the [[NCCH/Extended_Header#ARM11_Kernel_Capabilities|interrupt flags of the process's exheader]], and the latter are not checked when mapping interrupt 15. | + | svcBindInterrupt registers the given event or semaphore corresponding to the handle to the global [[ARM11_Interrupts#Interrupt_Table_.28New3DS.29|"interrupt table"]] for the given interrupt ID. Interrupts 0-14 and 16-31 can never be mapped regardless of the [[NCCH/Extended_Header#ARM11_Kernel_Capabilities|interrupt flags of the process's exheader]], and the latter are not checked when mapping interrupt 15. The "is level high active"/"is manual clear" parameter must be false when binding a semaphore handle (otherwise 0xD8E007EE "invalid combination" is returned). |
| | | |
− | If an interrupt event was already registered for the given ID, svcBindInterrupt returns error 0xD8E007F0. See [[KBaseInterruptEvent]] for more information on what happens on receipt of an interrupt. | + | If something was already registered for the given ID, svcBindInterrupt returns error 0xD8E007F0. See [[KBaseInterruptEvent]] for more information on what happens on receipt of an interrupt. |
| | | |
− | Applications hence can wait for specific interrupts to happen by calling WaitSynchronization(N) on the event handles. | + | Applications hence can wait for specific interrupts to happen by calling WaitSynchronization(N) on the event or semaphore handles. |
| | | |
| The set of existing ARM11 interrupts is listed on [[ARM11 Interrupts|this page]]. | | The set of existing ARM11 interrupts is listed on [[ARM11 Interrupts|this page]]. |