Öffentliche Methoden |
void | ready (Thread &that) |
| Anmelden des Threads that beim Scheduler.
|
void | exit () |
| Beenden des aktuell laufenden Prozesses.
|
void | kill (Thread &that) |
| Bricht einen anderen Prozess ab.
|
void | resume () |
| Auslösen eines Prozesswechsels.
|
| Scheduler () |
| Konstruktor.
|
void | schedule () |
| Starten des Schedulings.
|
void | ready (Entrant &that) |
| Anmelden eines Prozesses zum Scheduling.
|
void | kill (Entrant &that) |
| Beenden eines beliebigen Prozesses.
|
void | set_idle_thread (int cpuid, Entrant *thread) |
| Setzt einen dedizierten Idle-Thread für die entsprechende CPU.
|
void | sleep_until_IRQ () |
| Legt den aktuellen Prozessor schlafen, solange keine Prozesse vorhanden sind.
|
| Dispatcher () |
| Konstruktor.
|
Coroutine * | active () |
| Hiermit kann abgefragt werden, welche Koroutine gerade im Besitz des aktuellen Prozessors ist.
|
void | go (Coroutine &first) |
| Mit dieser Methode wird die Koroutine first im Life-Pointer des aktuellen Prozessores vermerkt und gestartet.
|
void | dispatch (Coroutine &next) |
| Diese Methode setzt den Life-Pointer des aktuellen Prozessors auf next und führt einen Koroutinenwechsel vom alten zum neuen Life-Pointer durch.
|
Systemaufrufschnittstelle zum Scheduler.
Der Guarded_Scheduler implementiert die Systemaufrufschnittstelle zum Scheduler. Die von ihm angebotenen Methoden werden direkt auf die Methoden der Basisklasse abgebildet, nur dass ihre Ausführung jeweils mit Hilfe eines Objekts der Klasse Secure geschützt wird und dass nicht Entrant, sondern Thread Objekte behandelt werden.
Hinweis
Da die Methoden von Guarded_Scheduler die gleichen Namen haben wie die der Basisklasse Scheduler, verdecken sie diese normalerweise. Dies kann verhindert werden, wenn bei dem Aufruf einer Methode der Name der Basisklasse explizit angeführt wird. Beispiel:
scheduler.Scheduler::ready (appl2);