FAU UnivIS
Techn. Fak. Dep. Informatik

Behandlung für einen "Killer"-IPI, also eine Nachricht, dass ein Thread beendet werden soll. Mehr ...

#include <assassin.h>

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

Öffentliche Methoden

void hire ()
 "Anwerben" des Assassins Mehr ...
 
bool prologue ()
 Prolog der Unterbrechungsbehandlung. Mehr ...
 
virtual void epilogue ()
 Epilog der Unterbrechungsbehandlung. Mehr ...
 
- Öffentliche Methoden geerbt von Gate
 Gate ()
 Konstruktor. Mehr ...
 
virtual ~Gate ()
 Destruktor. 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 ...
 

Weitere Geerbte Elemente

- Öffentliche Attribute geerbt von Gate
QueueLink< Gatequeue_link
 Verkettungszeiger für Epilog Queue.
 

Ausführliche Beschreibung

Behandlung für einen "Killer"-IPI, also eine Nachricht, dass ein Thread beendet werden soll.

Nur für MPStuBS notwendig.

Will ein Thread einen anderen Thread mittels Scheduler::kill() beenden, so muss man, falls der zu beendende Thread gerade irgendwo läuft diese CPU benachrichtigen, dass der Thread sterben soll. Die soll durch einen Interprozessorinterrupt (IPI) realisiert werden. Die Klasse Assassin soll nun diesen IPI behandeln und im Epilog prüfen, ob beim aktuell laufenden Thread das Sterbe-Flag gesetzt ist, dann gegebenenfalls den Thread von der Ready-Liste entfernen und eine Threadumschaltung auslösen.

Dokumentation der Elementfunktionen

void Assassin::epilogue ( )
virtual

Epilog der Unterbrechungsbehandlung.

Der Epilog muss nun, falls der aktuell laufende Thread das "Dying-Flag" gesetzt hat, ein Rescheduling auslösen.

Erneute Implementation von Gate.

void Assassin::hire ( )

"Anwerben" des Assassins

Konfiguriert Plugbox plugbox derart, dass der Assassin beim Auftreten des entsprechenden Interrupts aktiviert wird.

bool Assassin::prologue ( )
virtual

Prolog der Unterbrechungsbehandlung.

Der Prolog muss hier nichts weiter tun als einen Epilog anzufordern.

Rückgabe
Gibt true zurück, um einen Epilog anzufordern

Implementiert Gate.


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