OOStuBS/MPStuBS
Auflistung der Klassen
Hier folgt die Aufzählung aller Klassen, Strukturen, Varianten und Schnittstellen mit einer Kurzbeschreibung:
[Detailebene 12]
 CAPICSystemAbstraktion für die Erkennung und das Booten eines PCs mit APIC
 CApplicationDie Klasse Application definiert eine Anwendung für OO-Stubs
 CAssassinBehandlung für einen "Killer"-IPI, also eine Nachricht, dass ein Thread beendet werden soll.Nur für MPStuBS notwendig
 CBellSynchronisationsobjekt zum Schlafenlegen für eine bestimmte ZeitspanneEin "Wecker" ist ein Synchronisationsobjekt, mit dem ein oder mehrere Threads sich für eine bestimmte Zeit schlafen legen können
 CBellringerVerwaltung und Anstoßen von zeitgesteuerten Aktivitäten.Der "Glöckner" (Bellringer) wird regelmäßig aktiviert und prüft, ob irgendwelche "Glocken" (Bell-Objekte) läuten müssen. Die Glocken befinden sich in einer Liste, die der Glöckner verwaltet. Eine geschickte Implementierung vermeidet, bei jeder Aktivierung die gesamte Liste zu durchlaufen
 CCGA_ScreenAbstraktion des CGA-Textmodus.Mit Hilfe dieser Klasse kann man auf den Bildschirm des PCs zugreifen. Der Zugriff erfolgt direkt auf der Hardwareebene, d.h. über den Bildschirmspeicher bzw. die I/O-Ports der Grafikkarte
 CCGA_StreamDarstellung verschiedener Datentypen auf dem BildschrimDie Klasse CGA_Stream ermöglicht die Ausgabe verschiedener Datentypen als Zeichenketten auf dem CGA Bildschirm eines PCs. Dazu braucht CGA_Stream nur von den Klassen O_Stream und CGA_Screen abgeleitet und endlich die Methode flush() implementiert werden. Für weitergehende Formatierung oder spezielle Effekte stehen die Methoden der Klasse CGA_Screen zur Verfügung
 CCPUImplementierung einer Abstraktion fuer den Prozessor
 Ccpu_contextGesicherter Unterbrechungskontext (generischer Teil)
 Ccpu_context_with_error_codeGesicherter Unterbrechungskontext falls ein Fehlercode vorhanden ist
 Ccpu_context_without_error_codeGesicherter Unterbrechungskontext falls kein Fehlercode vorhanden ist
 CDFRDestination Format Register
 CDispatcherDer Dispatcher lastet Threads ein und setzt damit die Entscheidungen der Ablaufplanung durch
 CGateKlasse von Objekten, die in der Lage sind, Unterbrechungen zu behandeln.Die Klassen aller Objekte, die in der Plugbox eingetragen werden sollen, müssen von Gate abgeleitet werden und die virtuelle Methode prologue() definieren. Für die virtuelle Methode epilogue() kann in Gate eine leere Implementierung angegeben werden, so dass abgeleitete Treiberklassen nicht unbedingt einen Epilog definieren müssen. Um feststellen, ob ein Gate-Objekt schon in eine Epilog-Warteschlange einhängt wurde, soll ein entsprechendes boolesches Attribut in die Klasse aufgenommen werden, das durch Zugriffsfunktionen gesetzt und abgefragt werden kann
 CGDTDescriptorDiese Klasse beschreibt den Inhalt eines einzelnen GDT Eintrages
 CGlobalDescriptorTableDiese Struktur beschreibt einen GDT Zeiger. Er enthält die Länge der GDT in Bytes (minus 1 Byte) und den Pointer auf die GDT. Dieser Pointer wird zusammen mit lgdt verwendet
 CGuardSynchronisation des BS-Kerns mit Unterbrechungen.Die Klasse Guard dient der Synchronisation zwischen "normalen" Kernaktivitäten (zur Zeit Ausgaben, später Systemaufrufe) und Unterbrechungsbehandlungsroutinen. Dazu besitzt Guard eine Warteschlange (Queue-Objekt) je CPU, in die Gate-Objekte eingereiht werden können. Das ist immer dann erforderlich, wenn zum Zeitpunkt des Auftretens einer Unterbrechung der kritische Abschnitt gerade besetzt ist, die epilogue() Methode also nicht sofort bearbeitet werden darf. Die angesammelten Epiloge werden behandelt, sobald der kritische Abschnitt wieder freigegeben wird
 CGuarded_BellSchnittstelle von Anwendungsthreads zu Bell-Objekten
 CGuarded_KeyboardSystemaufrufschnittstelle zur Tastatur
 CGuarded_SchedulerSystemaufrufschnittstelle zum Scheduler
 CGuarded_SemaphoreSystemaufrufschnittstelle zum Semaphor
 CICR_HInterrupt Command Register High
 CICR_LInterrupt Command Register Low
 CIdleThreadThread, der immer dann läuft, wenn eine CPU nichts zu tun hat.Die Verwendung von IdleThread vereinfacht die Behandlung von "däumchendrehenden" Prozessoren
 CIO_PortDie IO_Port-Klasse dient dem Zugriff auf die Ein-/Ausgabeports des PC
 CIOAPICAbstraktion 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
 CIOAPICIDID des IO-APICs
 CIOAPICRegisterUnion über die einzelnen Registertypen des IO-APICs
 CIOREDTBL_HEintrag in der IO Redirection Table.
 CIOREDTBL_LEintrag in der IO Redirection Table
 CKeyAbstraktion für eine Taste bestehend aus ASCII-Code, Scancode und Modifierbits
 CscanScan-Codes einiger spezieller Tasten
 CKeyboardDie Klasse Keyboard stellt die Abstraktion der Tastatur dar.Sie sorgt für die korrekte Initialisierung und vor allem für die Unterbrechungsbehandlung. Später wird Keyboard auch die Tastaturabfrage durch die Anwendung ermöglichen
 CKeyboard_ControllerAbstraktion für den Tastaturcontroller des PCsDie Klasse Keyboard_Controller dient dazu, die PC Tastatur zu initialisieren und aus den gesendeten Make- und Break-Codes den Scan- und ASCII Code der gedrückten Taste zu bestimmen
 Ckbd_cmdKommandos an die Tastatur
 Ckbd_replyAntworten der Tastatur
 CKeyboardApplicationDie Klasse KeyboardApplication definiert eine Anwendung für OO-Stubs
 CLAPICAbstraktion 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
 CLAPICID_PLocal APICID Register für P6 und Pentium
 CLAPICID_P4Local APIC ID Register für Pentium IV und spätere
 CLAPICTimer_ControlLAPIC-Timer Control Register
 CLAPICVERLocal APIC Version Register
 CLDRLogical Destination Register
 CMathDie Klasse Math implementiert mathematische Hilfsfunktionen
 Cmpct_busBus Entry Intel MP Spec, p. 4-10
 Cmpct_intI/O Interrupt Entry
 Cmpct_ioapicIOAPIC Entry
 Cmpct_processorProcessor Entry
 CmpcthMP config table header
 CmpfpsMP floating pointer structure
 CO_StreamDie Aufgaben der Klasse O_Stream entsprechen im Wesentlichen denen der Klasse ostream der bekannten C++ IO-Streams-Bibliothek
 CPanicStandardunterbrechungsbehandlung
 CPlugboxAbstraktion einer Interruptvektortabelle.Damit kann man die Adresse der Behandlungsroutine fuer 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 diesen Feld ist dabei die Vektornummer
 CQueueDie Klasse Queue realisiert eine einfach verkettete Liste von Objekten mit next Zeiger
 CIteratorEin Queue Iterator
 CQueueLinkVerkettungszeiger zum Einfügen eines Objektes in eine einfach verkettete Liste
 CSchedulerDer Scheduler implementiert die Ablaufplanung und somit die Auswahl des nächsten Threads
 CSecureDie Klasse Secure dient dem bequemen Schutz kritischer Abschnitte.Dabei wird die Tatsache ausgenutzt, dass der C++ Compiler für jedes Objekt automatisch Konstruktor- und Destruktoraufrufe in den Code einbaut und dass ein Objekt seine Gültigkeit verliert, sobald der Bereich (Scope), in dem es deklariert wurde, verlassen wird
 CSemaphoreSemaphore werden zur Synchronisation von Threads verwendet.Die Klasse Semaphore implementiert das Synchronisationskonzept des zählenden Semaphors. Die benötigte Warteliste erbt sie dabei von ihrer Basisklasse Waitingroom
 CSpinlockMit Hilfe eines Spinlocks kann man Codeabschnitte serialisieren die echt nebenläufig auf mehreren CPUs laufen
 CStringbufferDie Klasse Stringbuffer dient dazu, einzelne Zeichen zu längeren Texten zusammenzustellen, die dann an einem Stück verarbeitet werden können
 CSVRSpurious Interrupt Vector Register
 CThreadDer Thread ist das Objekt der Ablaufplanung
 CTicketlockMit Hilfe eines Ticketlocks kann man Codeabschnitte serialisieren, die echt nebenläufig auf mehreren CPUs laufen
 CtocDie Struktur toc dient dazu, bei einem Koroutinenwechsel die Werte der nicht-flüchtigen Register zu sichern
 CTPRTask Priority Register
 CWaitingroomListe von Threads, die auf ein Ereignis warten.Die Klasse Waitingroom implementiert eine Liste von Threads, die alle auf ein bestimmtes Ereignis warten
 CWakeUpInterruptbehandlungsobjekt, um in MPStuBS schlafende Prozessoren mit einem IPI zu wecken, falls neue Threads aktiv wurden. Diese Interruptbehandlung soll explizit keinen Epilog nach sich ziehen
 CWatchInterruptbehandlung für Timerinterrupts