Abstraktion einer Interruptvektortabelle. Mehr ...
Aufzählungen | |
| enum | Vector { timer = 32, keyboard = 33, gdb = 35, serial = 36, panic = 99, assassin = 100, wakeup = 101 } |
| Liste der verwendeten Interruptvektoren. Mehr ... | |
Funktionen | |
| void | assign (unsigned int vector, Gate *gate) |
| Einstöpseln einer Behandlungsroutine, die in Form eines Gate-Objekts vorhanden sein muss. Mehr ... | |
| Gate * | report (unsigned int vector) |
| Abfrage eines eingetragenen Gate Objekts. Mehr ... | |
Abstraktion einer Interruptvektortabelle.
Damit kann man die Adresse der Behandlungsroutine für jeden Hardware- und Softwareinterrupt und jede Prozessorexception festlegen. Jede Unterbrechungsquelle wird durch ein Gate-Objekt repräsentiert. Diese liegen in einem Feld (256 Elemente). Der Index in dieses Feld ist dabei die Vektornummer.
| enum Plugbox::Vector |
Liste der verwendeten Interruptvektoren.
In OOStuBS benötigen wir lediglich Vektornummern für den Timerbaustein und die Tastatur, in MPStuBS noch weitere zur Synchronisation zwischen CPUs.
| Aufzählungswerte | |
|---|---|
| timer | Interruptvektornummer für den Timerinterrupt. |
| keyboard | Interruptvektornummer für den Keyboardinterrupt. |
| gdb | Interruptvektornummer für Debug Interprozessorunterbrechung. |
| serial | Interruptvektornummer für den Empfangsinterrupt der seriellen Schnittstelle. |
| panic | Interruptvektornummer für Fehlkonfigurationen. |
| assassin | Interruptvektornummer für den Assassin; nur in MPStuBS benötigt. |
| wakeup | Interruptvektornummer zum Aufwecken von schlafenden CPUs; nur in MPStubs benötigt. |
| void Plugbox::assign | ( | unsigned int | vector, |
| Gate * | gate | ||
| ) |
Einstöpseln einer Behandlungsroutine, die in Form eines Gate-Objekts vorhanden sein muss.
| vector | Interruptvektor, für den die Behandlungsroutine registriert werden soll. |
| gate | Objekt mit Behandlungsroutine |