Friedrich-Alexander-Universität UnivisSuche FAU-Logo
Techn. Fakultät Willkommen am Department Informatik FAU-Logo
Logo I4
Lehrstuhl für Informatik 4
Betriebssysteme
 
  Vorlesung
    - UnivIS-Infos
    - Inhalt
    - Folien
    - Videos
 
  Übungen
    - UnivIS-Infos
    - Inhalt
    - Module
    - Mailingliste
    - Ergänzendes Material
    - Terminübersicht
    - Aufgaben
       * Umgebung
       * Typische Fehler
       * Aufgabe 1
          Dokumentation
       * Aufgabe 2
          Dokumentation
       * Aufgabe 3
          Dokumentation
       * Aufgabe 4
          Dokumentation
       * Aufgabe 5
          Dokumentation
       * Aufgabe 6
          Dokumentation
       * Aufgabe 7
          Dokumentation
 
  Evaluation
Department Informatik  >  Informatik 4  >  Lehre  >  WS 2011/12  >  Betriebssysteme  >  Übungen  >  Aufgaben  >  Aufgabe 1

APICSystem Klassenreferenz

Abstraktion fĂĽr die Erkennung und das Booten eines PCs mit APIC. Mehr ...

#include <apicsystem.h>

Zusammengehörigkeiten von APICSystem:

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.

SystemType APICSystem::getSystemType (  )  [inline]

Abfrage des Systemtyps.

RĂĽckgabe:
Gibt den Systemtyp zurĂĽck


Die Dokumentation fĂĽr diese Klasse wurde erzeugt aufgrund der Dateien:
  Impressum   Datenschutz Stand: 2011-11-02 13:57   BO, DL