
Abstraktion des in der CPU integrierten local APICs. Mehr ...
Klassen | |
union | DestinationFormatRegister |
Destination Format Register. Mehr ... | |
union | IdentificationRegister |
Local APIC ID (für Pentium 4 und später) Mehr ... | |
union | LogicalDestinationRegister |
Logical Destination Register. Mehr ... | |
union | SpuriousInterruptVectorRegister |
union | TaskPriorityRegister |
Task Priority Register. Mehr ... | |
union | VersionRegister |
Local APIC Version. Mehr ... | |
Typdefinitionen | |
typedef uint32_t | Register |
Aufzählungen | |
enum | Model { Cluster = 0x0, Flat = 0xf } |
enum | APICSoftware { APICDisabled = 0, APICEnabled = 1 } |
Spurious Interrupt Vector Register. Mehr ... | |
enum | FocusProcessorChecking { CheckingEnabled = 0, CheckingDisabled = 1 } |
enum | SuppressEOIBroadcast { Broadcast = 0, SuppressBroadcast = 1 } |
enum | Index : uint16_t { Identification = 0x020, Version = 0x030, TaskPriority = 0x080, EOI = 0x0b0, LogicalDestination = 0x0d0, DestinationFormat = 0x0e0, SpuriousInterruptVector = 0x0f0, InterruptCommandRegisterLow = 0x300, InterruptCommandRegisterHigh = 0x310, TimerControl = 0x320, TimerInitialCounter = 0x380, TimerCurrentCounter = 0x390, TimerDivideConfiguration = 0x3e0 } |
System Programming Guide 3A, p. 9-8 - 9-10. Mehr ... | |
Funktionen | |
Register | read (Index idx) |
void | write (Index idx, Register value) |
uint8_t | getID () |
Liefert die ID des in der aktuellen CPU integrieren APICs. Mehr ... | |
uint8_t | getLogicalID () |
uint8_t | getVersion () |
Liefert Versionsnummer des local APICs. Mehr ... | |
void | init (uint8_t logicalID) |
Initialisiert den local APIC der jeweiligen CPU und setzt die lokale APIC ID im LDR Register. Mehr ... | |
void | endOfInterrupt () |
Signalisiert EOI (End of interrupt) Mehr ... | |
void | setLogicalID (uint8_t id) |
Variablen | |
volatile uintptr_t | base = 0xfee00000 |
Abstraktion des in der CPU integrierten local APICs.
In modernen PCs besitzt jede CPU einen sogenannten "local APIC". Dieser vermittelt zwischen dem I/O APIC, an den die externen Interruptquellen angeschlossen sind, und der CPU. Interruptnachrichten, welche den lokalen APIC von aussen erreichen, werden an den zugeordneten Prozessorkern weitergereicht, um dort die Interruptbearbeitung anzustoßen.
In Multiprozessorsystem ist es darüberhinaus noch möglich mit Hilfe des lokalen APICs Nachrichten in Form von Interprozessorinterrupts an andere CPUs zu schicken bzw. zu empfangen.
enum LAPIC::APICSoftware |
Spurious Interrupt Vector Register.
System Programming Guide 3A, p. 9-64
enum LAPIC::Index : uint16_t |
System Programming Guide 3A, p. 9-8 - 9-10.
Aufzählungswerte | |
---|---|
Identification | Local APIC ID Register, R/W. |
Version | Local APIC Version Register, RO. |
TaskPriority | Task Priority Register, R/W. |
EOI | EOI Register, WO. |
LogicalDestination | Logical Destination Register, R/W. |
DestinationFormat | Destination Format Register, bits 0-27 RO, bits 28-31 R/W. |
SpuriousInterruptVector | Spurious Interrupt Vector Register, bits 0-8 R/W, bits 9-1 R/W. |
InterruptCommandRegisterLow | Interrupt Command Register 1, R/W. |
InterruptCommandRegisterHigh | Interrupt Command Register 2, R/W. |
TimerControl | LAPIC timer control register, R/W. |
TimerInitialCounter | LAPIC timer initial counter register, R/W. |
TimerCurrentCounter | LAPIC timer current counter register, RO. |
TimerDivideConfiguration | LAPIC timer divide configuration register, RW. |
void LAPIC::endOfInterrupt | ( | ) |
Signalisiert EOI (End of interrupt)
Teilt dem local APIC mit, dass die aktuelle Interruptbehandlung abgeschlossen ist. Diese Funktion muss gegen Ende der Unterbrechungsbehandlung aufgerufen werden und zwar bevor prozessorseitig die Unterbrechungen wieder zugelassen werden.
uint8_t LAPIC::getID | ( | ) |
Liefert die ID des in der aktuellen CPU integrieren APICs.
uint8_t LAPIC::getVersion | ( | ) |
Liefert Versionsnummer des local APICs.
void LAPIC::init | ( | uint8_t | logicalID | ) |
Initialisiert den local APIC der jeweiligen CPU und setzt die lokale APIC ID im LDR Register.
logicalID | zu setzende APIC ID |