LAPIC Klassenreferenz
Abstraktion des in der
CPU integrierten local APICs.
Mehr ...
#include <lapic.h>
Aufstellung aller Elemente
|
Öffentliche Methoden |
| LAPIC () |
| Konstruktor.
|
void | init () |
| Initalisiert den local APIC der jeweiligen CPU.
|
void | ackIRQ () |
| Signalisiert EOI(End of interrupt).
|
unsigned char | getLAPICID () |
| Liefert die ID des in der aktuellen CPU integrieren APICs.
|
unsigned char | getCPUID () |
| Liefert eindeutige Identifikation der jeweiligen CPU.
|
unsigned char | getVersion () |
| Liefert Versionsnummer des local APICs.
|
void | setLogicalLAPICID (unsigned char id) |
| Setzt die local APIC ID im LDR Register.
|
void | sendIPI (unsigned char destination, struct ICR_L data) |
| Verschickt einen IPI an die adressieren CPU(s) Zum schicken von "normalen" IPIs sind folgende Einstellung im struct ICR_L notwerndig:
- destination_shorthand: 0
- level : 1 (Kein Init-IPI)
- destination_mode : 1 (Logical Destination Mode)
- delivery_mode : 0 (Fixed Delivery Mode)
- vector : Anwendungsspezifisch.
|
bool | isIPIDelivered () |
| Kehrt mit true zurück, falls zum Zeitpunkt des Aufrufs kein IPI aktiv ist. Kehrt mit false zurück, falls der letzte gesendete IPI noch nicht vom Zielprozessor akzeptiert wurde.
|
bool | isExternalAPIC () |
| Ist dieser lAPIC extern?
|
bool | isLocalAPIC () |
| Ist dieser lAPIC intern?
|
bool | isPentium4 () |
| Ist diese CPU ein PentiumIV?
|
Ausführliche Beschreibung
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.
Dokumentation der Elementfunktionen
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.
unsigned char LAPIC::getLAPICID |
( |
|
) |
|
Liefert die ID des in der aktuellen CPU integrieren APICs.
- Rückgabe:
- lAPIC ID
unsigned char LAPIC::getCPUID |
( |
|
) |
[inline] |
Liefert eindeutige Identifikation der jeweiligen CPU.
- Rückgabe:
- lAPIC ID als Identifikation der CPU
unsigned char LAPIC::getVersion |
( |
|
) |
|
Liefert Versionsnummer des local APICs.
- Rückgabe:
- Versionsnummer
void LAPIC::setLogicalLAPICID |
( |
unsigned char |
id |
) |
|
Setzt die local APIC ID im LDR Register.
- Parameter:
-
void LAPIC::sendIPI |
( |
unsigned char |
destination, |
|
|
struct ICR_L |
data | |
|
) |
| | |
Verschickt einen IPI an die adressieren CPU(s) Zum schicken von "normalen" IPIs sind folgende Einstellung im struct ICR_L notwerndig:
- destination_shorthand: 0
- level : 1 (Kein Init-IPI)
- destination_mode : 1 (Logical Destination Mode)
- delivery_mode : 0 (Fixed Delivery Mode)
- vector : Anwendungsspezifisch.
- Parameter:
-
| destination | Maske mit Zielcpu(s) |
| data | Einstellungen |
bool LAPIC::isIPIDelivered |
( |
|
) |
|
Kehrt mit true zurück, falls zum Zeitpunkt des Aufrufs kein IPI aktiv ist. Kehrt mit false zurück, falls der letzte gesendete IPI noch nicht vom Zielprozessor akzeptiert wurde.
- Rückgabe:
Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien: