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: