OOStuBS/MPStuBS
|
Abstraktion einer Interruptvektortabelle. Mehr ...
#include <plugbox.h>
Öffentliche Typen | |
enum | Vector { timer = 32, keyboard = 33, serial = 36, assassin = 100, wakeup = 101 } |
Liste der verwendeten Interruptvektoren. Mehr ... | |
Öffentliche Methoden | |
Plugbox () | |
Initialisierung der Gate map mit einem Default Gate. Mehr ... | |
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. |
serial | Interruptvektornummer für den Empfangsinterrupt der seriellen Schnittstelle. |
assassin | Interruptvektornummer für den Assassin; nur in MPStuBS benötigt. |
wakeup | Interruptvektornummer zum Aufwecken von schlafenden CPUs; nur in MPStubs benötigt. |
Plugbox::Plugbox | ( | ) |
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 |
Gate * Plugbox::report | ( | unsigned int | vector | ) |