Changes

252 bytes removed ,  03:08, 19 November 2016
Line 345: Line 345:  
= InterruptEvent =
 
= InterruptEvent =
   −
Abstract base class for interrupt events.
+
Abstract base class for all interrupt events.
    
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 356: Line 356:  
| void **
 
| void **
 
| Pointer to vtable
 
| Pointer to vtable
|-
  −
| 0x4
  −
| u32
  −
| Unknown
   
|}
 
|}
   −
The first method in the table is <code>virtual KInterruptEvent* InterruptEvent::getKInterruptEvent(u32 interruptID) = 0</code>. It's actually the function called by the IRQ handler, which returns a [[KInterruptEvent|KInterruptEvent]] to signal.
+
This abstract base class defines <code>virtual KInterruptEvent* InterruptEvent::handleInterruptAndKInterruptEvent(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.
 
If NULL or 1 is returned, no event will be signaled. If NULL is returned, no post-interrupt rescheduling will be done.
   −
The second method is <code>virtual void InterruptEvent::signalEvent(void) = 0</code>, which signals the associated [[KEvent|KEvent]] object.
     −
The kernel uses the [[KInterruptEvent|KInterruptEvent]] field of a [[KEvent|KEvent]] when binding public interrupts per svcBindInterrupt request, whereas it internally uses a static object of another subclass to bind interrupt 0x0F (FIQ abstraction).
+
The kernel uses the [[KInterruptEvent|KInterruptEvent]] field of a [[KEvent|KEvent]] when binding public interrupts per svcBindInterrupt request.