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
 
  Übungen
    - UnivIS-Infos
    - Inhalt
    - 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 2009/10  >  Betriebssysteme  >  √úbungen  >  Aufgaben  >  Aufgabe 5

IOAPIC Klassenreferenz

Abstraktion des IO-APICs, der zur Verwaltung der externen Interrupts dient. Mehr ...

#include <ioapic.h>

Aufstellung aller Elemente

√Ėffentliche Methoden

 IOAPIC ()
 Konstruktor Tut nichts. Initialisierung erfolgt mit init().
void init ()
 Initialisierung der IOAPICs.
void config (unsigned char slot, Plugbox::Vector vector)
 Zuordnung eines Vektors in der Interruptvektortabelle zu einem externen Interrupt.
void allow (unsigned char slot)
 Sorgt daf√ľr, dass Unterbrechungen des zugeordneten Ger√§tes an die CPU(s) weitergereicht werden. Um eine Unterbrechungsbehandlung zu erm√∂glichen, muss zus√§tzlich CPU::enable_int() aufgerufen werden.
void forbid (unsigned char slot)
 Erm√∂glicht einzelne Interrupts selektiv zu sperren.
bool status (unsigned char slot)
 Erm√∂glicht eine Abfrage des Maskierungsstatus f√ľr einzelne Interrupts.


Ausf√ľhrliche Beschreibung

Abstraktion des IO-APICs, der zur Verwaltung der externen Interrupts dient.

Kernst√ľck des IOAPICs ist die IO-Redirection Table. Dort l√§sst sich frei konfigurieren, welchem Interruptvektor eine bestimmte externe Unterbrechung zugeordnet werden soll. Ein Eintrag in dieser Tabelle ist 64 Bit breit. struct IOREDTBL_L und struct IOREDTBL_H sind Bitfelder, die die einzelnen Einstellungen eines Eintrages zug√§nglich machen.


Dokumentation der Elementfunktionen

void IOAPIC::init (  ) 

Initialisierung der IOAPICs.

Dabei werden alle Einträge in der IO-Redirection Table mit einem sinnvollen Wert vorbelegt. Das Feld, welches den auszulösenden Interruptvektor angibt, sollte mit einer Vektornummer vorbelegt werden, die so konfiguriert ist, dass sie den Panic-Handler auslöst. Initial sollten auch alle externen Interrupts im IOAPIC deaktiviert werden. Neben der Vektortabelle muss auch die APICID im IOAPICID-Register auf den Wert gesetzt werden, der während des Bootvorgangs aus den Systembeschreibungstabellen gelesen wurde. (APICSystem::getIOAPICID())

void IOAPIC::config ( unsigned char  slot,
Plugbox::Vector  vector 
)

Zuordnung eines Vektors in der Interruptvektortabelle zu einem externen Interrupt.

Parameter:
slot Nummer des zu konfigurierend Slots (und damit des dazugeh√∂rigen externen Interrupts) in der IO-Redirection Table.
vector Nummer des Vektors, der durch den mit slot ausgew√§hlten Interrupt verkn√ľpft werden soll.

void IOAPIC::allow ( unsigned char  slot  ) 

Sorgt daf√ľr, dass Unterbrechungen des zugeordneten Ger√§tes an die CPU(s) weitergereicht werden. Um eine Unterbrechungsbehandlung zu erm√∂glichen, muss zus√§tzlich CPU::enable_int() aufgerufen werden.

Parameter:
interrupt gibt an, welcher Interrupt aktiviert werden soll.

void IOAPIC::forbid ( unsigned char  slot  ) 

Ermöglicht einzelne Interrupts selektiv zu sperren.

Parameter:
interrupt gibt an, welcher Interrupt gesperrt werden soll.

bool IOAPIC::status ( unsigned char  slot  ) 

Erm√∂glicht eine Abfrage des Maskierungsstatus f√ľr einzelne Interrupts.

Parameter:
interrupt gibt an, f√ľr welchen Interrupt der Status abgefragt werden soll.
R√ľckgabe:
gibt true zur√ľck, falls der Interrupt zugelassen ist und false, falls er ausmaskiert wurde.


Die Dokumentation f√ľr diese Klasse wurde erzeugt aufgrund der Dateien:
  Impressum   Datenschutz Stand: 2010-07-19 12:34   BO, DL