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 4

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

void LAPIC::ackIRQ (  ) 

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:
id APIC ID

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:
  Impressum   Datenschutz Stand: 2012-01-16 14:04   BO, DL