OOStuBS/MPStuBS
Gate Klassenreferenzabstract

Klasse von Objekten, die in der Lage sind, Unterbrechungen zu behandeln. Mehr ...

#include <gate.h>

Klassendiagramm für Gate:
Zusammengehörigkeiten von Gate:

Öffentliche Methoden

 Gate ()
 Konstruktor. Mehr ...
 
virtual ~Gate ()
 Destruktor. Mehr ...
 
virtual bool prologue ()=0
 Unterbrechungsbehandlungsroutine, die sofort nach Auftreten der Unterbrechung asynchron zu anderen Kernaktivitäten ausgeführt wird. Mehr ...
 
virtual void epilogue ()
 Eine gegebenenfalls verzögerte, synchronisiert ausgeführte Unterbrechungsbehandlung. Mehr ...
 
bool set_queued ()
 Setzt atomar ein Flag um zu markieren, dass sich das Objekt gerade in einer Epilog-Warteschlange befindet. Mehr ...
 
void set_dequeued ()
 Setzt das in set_queued() gesetzte Flag zurück. Mehr ...
 

Öffentliche Attribute

QueueLink< Gatequeue_link
 Verkettungszeiger für Epilog Queue.
 

Private Attribute

int epilogue_queued
 Gibt an, ob der Epilog auf seine Abarbeitung wartet.
 

Ausführliche Beschreibung

Klasse 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.

Alle diese Objekte müssen nun die virtuelle Methode epilogue() 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.

Beschreibung der Konstruktoren und Destruktoren

◆ Gate()

Gate::Gate ( )
inline

Konstruktor.

◆ ~Gate()

virtual Gate::~Gate ( )
inlinevirtual

Destruktor.

Klassen mit virtuellen Methoden sollten grundsätzlich einen virtuellen Destruktor besitzen, der auch leer sein darf. Bei OO-Stubs beruhigt das den Compiler, bei anderen Systemen garantiert das, dass die Speicherfreigabe mit delete für Objekte der abgeleiteten Klassen korrekt funktioniert.

Dokumentation der Elementfunktionen

◆ epilogue()

virtual void Gate::epilogue ( )
inlinevirtual

Eine gegebenenfalls verzögerte, synchronisiert ausgeführte Unterbrechungsbehandlung.

Erneute Implementation in Keyboard, Watch, Assassin und Panic.

◆ prologue()

virtual bool Gate::prologue ( )
pure virtual

Unterbrechungsbehandlungsroutine, die sofort nach Auftreten der Unterbrechung asynchron zu anderen Kernaktivitäten ausgeführt wird.

Rückgabe
gibt an, ob der entsprechende Epilog auszuführen ist.

Implementiert in Keyboard, Watch, Assassin, WakeUp und Panic.

◆ set_dequeued()

void Gate::set_dequeued ( )
inline

Setzt das in set_queued() gesetzte Flag zurück.

◆ set_queued()

bool Gate::set_queued ( )
inline

Setzt atomar ein Flag um zu markieren, dass sich das Objekt gerade in einer Epilog-Warteschlange befindet.

Rückgabe
Gibt false zurück, falls das Flag vorher bereits gesetzt war, andernfalls true.

Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Datei: