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]].