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.
- 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: