Das Interrupt Subsystem. Mehr ...
Namensbereiche | |
| Guard | |
| Synchronisation des BS-Kerns mit Unterbrechungen. | |
| IOAPIC | |
| 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. Die Überlagerung (union) IOAPIC::RedirectionTableEntry enthält Bitfelder, welche die einzelnen Einstellungen eines Eintrages zugänglich machen sowie zwei 32 Bit-Werte, die die passende Repräsentation für die Register der IO-Redirection Table aus den Bitfeldern liefern. | |
| LAPIC | |
| Abstraktion des in der CPU integrierten local APICs.In modernen PCs besitzt jede CPU einen sogenannten "local APIC". Dieser vermittelt zwischen dem I/O APIC, an den die externen Interruptquellen angeschlossen sind, und der CPU. Interruptnachrichten, welche den lokalen APIC von aussen erreichen, werden an den zugeordneten Prozessorkern weitergereicht, um dort die Interruptbearbeitung anzustoßen. | |
| Plugbox | |
| Abstraktion einer Interruptvektortabelle. | |
Klassen | |
| class | Gate |
| Klasse von Objekten, die in der Lage sind, Unterbrechungen zu behandeln. Mehr ... | |
| class | Secure |
| Die Klasse Secure dient dem bequemen Schutz kritischer Abschnitte. Mehr ... | |
Funktionen | |
| void | guardian (uint32_t vector, irq_context *context) |
| Low-Level Interrupt-Behandlung. Mehr ... | |
Das Interrupt Subsystem.
Das Interrupt Subsystem von OO/MPStubBS beinhaltet alle Funktionalität um Unterbrechungen von der Hardware anzunehmen und diese abzuarbeiten. In späteren Übungen werden dann die Interrupts mit der Anwendungs-aktivierten Kernausführung (Systemaufrufe) synchronisiert. Der Eintrittspunkt für das Interrupt Subsystem ist die Funktion guardian.
| void guardian | ( | uint32_t | vector, |
| irq_context * | context | ||
| ) |
Low-Level Interrupt-Behandlung.
Zentrale Unterbrechungsbehandlungsroutine des Systems. Diese Funktion wird von dem Assembler Teil der Unterbrechungsbehandlung aufgerufen. Beim Betreten der Funktion sind die Unterbrechungen auf dieser CPU gesperrt.
| vector | gibt die Nummer des aufgetretenen Interrupts an. |
| context | beinhaltet einen Pointer auf den eigenen Stack, über den auf den Unterbrechungskontext zugegriffen werden kann. |