APICSystem Klassenreferenz
Abstraktion für die Erkennung und das Booten eines PCs mit APIC.
Mehr ...
#include <apicsystem.h>
Aufstellung aller Elemente
|
Öffentliche Typen |
enum | SystemType { MP_APIC,
UP_APIC,
UNDETECTED
} |
| Art des Systems. Mehr ...
|
enum | Device {
timer = 0,
keyboard = 1,
com1 = 3,
com2 = 4,
floppy = 6,
lpt1 = 7,
rtc = 8,
ps2mouse = 12,
ide1 = 14,
ide2 = 15
} |
Öffentliche Methoden |
void | detectSystemType () |
| Führt Systemerkennung aus.
|
bool | bootCPU (unsigned int cpu_id, void *top_of_stack) |
| Startet einen Applikationsprozessor.
|
unsigned char | getCPUID () |
| Liefert die CPUID der aktuellen CPU.
|
void | sendCustomIPI (unsigned char logicalDestination, unsigned char vector) |
| Auslösen eines Interprozessorinterrupts.
|
void | initLAPIC () |
| Initialisiert den Local APIC.
|
unsigned char | getIOAPICSlot (APICSystem::Device device) |
| Liefert die Nummer des Pins, an dem das Gerät device hängt.
|
const char * | getCPUModel (unsigned int cpuID) |
SystemType | getSystemType () |
| Abfrage des Systemtyps.
|
unsigned int | getNumberOfCPUs () |
| Gibt die Anzahl der CPUs zurück.
|
unsigned int | getNumberOfOnlineCPUs () |
| Gibt die Anzahl der erfolgreich gebooteten CPUs zurück.
|
unsigned char | getIOAPICID () |
| Liefert die während des Bootvorgangs ausgelesene ID des IOAPICs.
|
unsigned char | getBSPID () |
| Liefert die ID des Bootprozessors (BSP).
|
void | callin () |
void | waitForCallout () |
unsigned char | getAndIncNextLogicalAPICID () |
unsigned char | getLogicalLAPICID (unsigned char cpu) |
Ausführliche Beschreibung
Abstraktion für die Erkennung und das Booten eines PCs mit APIC.
Dokumentation der Aufzählungstypen
Art des Systems.
- Aufzählungswerte:
-
MP_APIC |
Multiprozessor System. |
UP_APIC |
Singleprozessor System mit APIC HW. |
UNDETECTED |
Unbekannte Systemkonfiguration. |
Dokumentation der Elementfunktionen
void APICSystem::detectSystemType |
( |
|
) |
|
Führt Systemerkennung aus.
Diese Funktion erkennt ein eventuell vorhandenes Mehrprozessorsystem. Nach erfolgter Erkennung kann der Systemtyp mit Hilfe der Methode getSystemType() abgefragt werden.
bool APICSystem::bootCPU |
( |
unsigned int |
cpu_id, |
|
|
void * |
top_of_stack | |
|
) |
| | |
Startet einen Applikationsprozessor.
- Parameter:
-
| cpu_id | Gib an, welcher Prozessor gestartet werden soll. Applikationsprozessoren haben die IDs 1 bis n-1 |
| top_of_stack | Zeiger auf die oberste Adresse des Stacks, der von der zu startenden CPU verwendet werden soll. |
- Rückgabe:
- True, falls CPU Bootup erfolgreich; sonst false.
unsigned char APICSystem::getCPUID |
( |
|
) |
|
Liefert die CPUID der aktuellen CPU.
- Rückgabe:
- CPUID der aktuellen CPU.
void APICSystem::sendCustomIPI |
( |
unsigned char |
logicalDestination, |
|
|
unsigned char |
vector | |
|
) |
| | |
Auslösen eines Interprozessorinterrupts.
Mit Hilfe dieser Methode kann ein Interprozessorinterrupt(IPI) an eine ganze Gruppe von Prozessoren geschickt werden. In MPStuBS ist das System derart konfiguriert, dass insgesamt 8 CPUs angesprochen werden können. Jede CPU wird wird durch ein Bit in logicalDestination repräsentiert. Dabei steht Bit 0 für CPU 0, Bit 1 für CPU 1 usw.. Welcher Interruptvektor dabei ausgelöst werden soll, wird durch vector festgelegt. Zum Senden eines IPIs soll dabei die Methode LAPIC::sendIPI() verwendet werden.
- Parameter:
-
| logicalDestination | Menge von Prozessoren, die einen IPI erhalten sollen. |
| vector | Interruptvektor, der ausgelöst werden soll. |
Abfrage des Systemtyps.
- Rückgabe:
- Gibt den Systemtyp zurück
Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien: