Abstraktion des IO-APICs, der zur Verwaltung der externen Interrupts dient.
Mehr ...
#include <ioapic.h>
Ö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::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
-
slot | Nummer des freizuschaltenden Slots |
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::forbid |
( |
unsigned char |
slot | ) |
|
Ermöglicht einzelne Interrupts selektiv zu sperren.
- Parameter
-
slot | Nummer des zu sperrenden Slots |
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())
bool IOAPIC::status |
( |
unsigned char |
slot | ) |
|
Ermöglicht eine Abfrage des Maskierungsstatus für einzelne Interrupts.
- Parameter
-
slot | gibt an, für welchen Slot 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: