ARM11 Interrupts: Difference between revisions

No edit summary
Line 298: Line 298:
|-
|-
| 0x0
| 0x0
| InterruptEvent *
| [[KBaseInterruptEvent]] *
| Pointer to the InterruptEvent object for that interrupt  
| Pointer to the KBaseInterruptEvent object for this interrupt  
|-
|-
| 0x4
| 0x4
Line 342: Line 342:
| Alignment
| Alignment
|}
|}
= InterruptEvent =
Abstract base class for all interrupt events.
{| class="wikitable" border="1"
|-
!  Offset
!  Type
!  Description
|-
| 0x0
| void **
| Pointer to vtable
|}
This abstract base class defines <code>virtual KInterruptEvent* InterruptEvent::handleInterruptAndGetKInterruptEvent(u32 interruptID) = 0</code>. It's actually the function called by the IRQ handler, which returns a [[KInterruptEvent|KInterruptEvent]] to signal.
If NULL or 1 is returned, no event will be signaled. If NULL is returned, no post-interrupt rescheduling will be done.
The kernel uses the [[KInterruptEvent|KInterruptEvent]] field of a [[KEvent|KEvent]] when binding public interrupts per svcBindInterrupt request.