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 2

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 Stand: 2011-11-09 10:41   BO, DL