Difference between revisions of "KUserBindableInterruptEvent"

From 3dbrew
Jump to navigation Jump to search
(( ͡° ͜ʖ ͡°) (2))
 
(One intermediate revision by the same user not shown)
Line 4: Line 4:
 
Size : 0xC bytes
 
Size : 0xC bytes
  
Abstract base class for KEventInterruptEvent and KSemaphoreInterruptEvent, to be used with svcBindInterrupt.
+
Abstract class which is a base class for [[KEvent]] and [[KSemaphore]], to be used with svcBindInterrupt.
  
It appears that semaphores were originally planned to be bindable by svcBindInterrupt (except for the FIQ abstraction interrupt, SGI #15). The sole reason preventing semaphores to be used with svcBindInterrupt is a type check.
+
Semaphores cannot be bound to level high ("rising edge") active interrupts.
  
For public interrupts (i.e. anything else than SGI #15 in this case), svcBindInterrupts sets the flag that indicates that the interrupt shall be disabled after each time the interrupt is received.
+
For public interrupts (i.e. anything else than SGI #15 in this case), svcBindInterrupt sets the flag that indicates that the interrupt shall be disabled after each time the interrupt is received.
  
The second virtual function reenables the interrupt (using the interrupt ID) and signals the parent object. In the case of KSemaphoreInterruptEvent this also increment the parent semaphore's count.
+
The second virtual function reenables the interrupt (using the interrupt ID) and signals the object (as synchronization object). In the case of KSemaphore this also increments the semaphore's count.
  
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"

Latest revision as of 20:10, 10 December 2016

class KUserBindableInterruptEvent extends KSchedulableInterruptEvent

Size : 0xC bytes

Abstract class which is a base class for KEvent and KSemaphore, to be used with svcBindInterrupt.

Semaphores cannot be bound to level high ("rising edge") active interrupts.

For public interrupts (i.e. anything else than SGI #15 in this case), svcBindInterrupt sets the flag that indicates that the interrupt shall be disabled after each time the interrupt is received.

The second virtual function reenables the interrupt (using the interrupt ID) and signals the object (as synchronization object). In the case of KSemaphore this also increments the semaphore's count.

Offset Type Description
0x0 void ** Pointer to vtable
0x4 KSynchronizationInterruptEvent * Next interrupt event (associated with the current one), usually a KSchedulableInterruptEvent. The linked list represented by this attribute can contain cycles
0x8 s32 Interrupt ID, -1 by default