SVC: Difference between revisions
( ͡° ͜ʖ ͡°) |
|||
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 | | 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 | | 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 | 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]]. |