Inter-Processor Interrupts. More...
Classes | |
| union | InterruptCommand | 
| Interrupt Command.  More... | |
Structs | |
| struct | InterruptCommand.__unnamed__ | 
Enumerations | |
| enum | DeliveryMode {  FIXED = 0, LOWEST_PRIORITY = 1, SMI = 2, NMI = 4, INIT = 5, INIT_LEVEL_DEASSERT = 5, STARTUP = 6 }  | 
| Delivery mode specifies the type of interrupt sent to the CPU.  More... | |
| enum | DestinationMode {  PHYSICAL = 0, LOGICAL = 1 }  | 
| Way of interpreting the value written to the destination field.  More... | |
| enum | DeliveryStatus {  IDLE = 0, SEND_PENDING = 1 }  | 
| Interrupt state.  More... | |
| enum | Level {  DEASSERT = 0, ASSERT = 1 }  | 
| Interrupt level.  More... | |
| enum | TriggerMode {  EDGE_TRIGGERED = 0, LEVEL_TRIGGERED = 1 }  | 
| Trigger mode for DeliveryMode::INIT_LEVEL_DEASSERT.  More... | |
| enum | DestinationShorthand {  NO_SHORTHAND = 0, SELF = 1, ALL_INCLUDING_SELF = 2, ALL_EXCLUDING_SELF = 3 }  | 
| Shorthand for commonly used destinations.  More... | |
| enum | InterruptMask {  UNMASKED = 0, MASKED = 1 }  | 
| Interrupt mask.  More... | |
Functions | |
| bool | isDelivered () | 
| Check if the previously sent IPI has reached its destination.  More... | |
| void | send (uint8_t destination, uint8_t vector) | 
| Send an Inter-Processor Interrupt (IPI)  More... | |
| void | sendGroup (uint8_t logical_destination, uint8_t vector) | 
| Send an Inter-Processor Interrupt (IPI) to a group of processors.  More... | |
| void | sendAll (uint8_t vector) | 
| Send an Inter-Processor Interrupt (IPI) to all processors (including self)  More... | |
| void | sendOthers (uint8_t vector) | 
| Send an Inter-Processor Interrupt (IPI) to all other processors (all but self)  More... | |
| void | sendInit (bool assert=true) | 
| Send an INIT request IPI to all other processors.  More... | |
| void | sendStartup (uint8_t vector) | 
| Send an Startup IPI to all other processors.  More... | |
Inter-Processor Interrupts.
For multi-core systems, the LAPIC enables sending messages (Inter-Processor Interrupts, IPIs) to other CPU cores and receiving those sent from other cores.
Delivery mode specifies the type of interrupt sent to the CPU.
| enum LAPIC::IPI::Level | 
| bool LAPIC::IPI::isDelivered | ( | ) | 
Check if the previously sent IPI has reached its destination.
true if the previous IPI was accepted from its target processor, otherwise false | void LAPIC::IPI::send | ( | uint8_t | destination, | 
| uint8_t | vector | ||
| ) | 
Send an Inter-Processor Interrupt (IPI)
| destination | ID of the target processor (use APIC::getLAPICID(core) ) | 
| vector | Interrupt vector number to be triggered | 
| void LAPIC::IPI::sendGroup | ( | uint8_t | logical_destination, | 
| uint8_t | vector | ||
| ) | 
Send an Inter-Processor Interrupt (IPI) to a group of processors.
| logical_destination | Mask containing the logical APIC IDs of the target processors (use APIC::getLogicalLAPICID()) | 
| vector | Interrupt vector number to be triggered | 
| void LAPIC::IPI::sendAll | ( | uint8_t | vector | ) | 
Send an Inter-Processor Interrupt (IPI) to all processors (including self)
| vector | Interrupt vector number to be triggered | 
| void LAPIC::IPI::sendOthers | ( | uint8_t | vector | ) | 
Send an Inter-Processor Interrupt (IPI) to all other processors (all but self)
| vector | Interrupt vector number to be triggered | 
| void LAPIC::IPI::sendInit | ( | bool | assert = true | ) | 
Send an INIT request IPI to all other processors.
| assert | if true send an INIT, on false send an INIT Level De-assert  | 
| void LAPIC::IPI::sendStartup | ( | uint8_t | vector | ) | 
Send an Startup IPI to all other processors.
| vector | Pointer to a startup routine |