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