8.2.7.1
Taskstart durch unerwartete Eingabe
Unerwartete Eingabe
Falls ein Eingabe–Peripheriegerät, etwa ein Datensichtgerät, einen Interrupt auslöst und
momentan für dieses Gerät keine Eingabeanforderung von einer Task ansteht, spricht man
von einer unerwarteten Eingabe. Dieser Fall tritt auf, wenn beispielsweise die BREAK–Taste
des Datensichtgeräts betätigt wird.
Zwei Zeichen pro Gerät
Unter RMOS3 ist es möglich, eine Task zu definieren, deren Aufgabe es ist, die unerwartete
Eingabe von diesem Gerät zu verarbeiten. Die Task wird in der Konfigurierung des
jeweiligen Geräts/Treibers angegeben. Eine unerwartete Eingabe wird ignoriert, wenn keine
Task zu ihrer Bearbeitung konfiguriert wurde. Eine unerwartete Eingabe lässt sich für jeweils
zwei Zeichen pro Gerät konfigurieren. Beim Taskstart durch unerwartete Eingabe einer Task
enthält das Register AL die Treiber–ID, AH die Geräte–ID und BL das Eingabe–Byte; das
Register BH ist reserviert (Null).
Ein Beispiel für die unerwartete Eingabe ist z.B. der Start der CLI auf einer VGA-Konsole.
Hier wird mit <CTRL> + <R> eine CLI-Task (CLI_JOB_x) gestartet.
8.2.7.2
Parameterübergabe beim Taskstart
Zwei Datenworte als Parameter
Jede Task erhält mit dem Startvorgang (Übergang von DORMANT in
BEREIT) zwei Datenworte als Parameter in den EAX– und EBX–Registern. Nur in
Assembler geschriebene Tasks können auf die Parameter direkt zugreifen. Tasks, die in
einer Hochsprache codiert sind, können diese Parameter mit den Prozeduren
getparm
Prozeduren
,
getdword
getdword
getparm
getparm
die Register EAX und EBX verwenden und so die ursprünglichen Werte zerstören.
Zusätzlich werden zwei Parameter vom jeweiligen TCD–Block auf dem Stack abgelegt.
get2ndparm
überschrieben. Daher können anschließend die Funktionen
mehr verwendet werden.
RMOS3 V3.50 Benutzerhandbuch
Bedienhandbuch, 07/2012, A5E03692290-01
und
auswerten.
get2ndparm
,
getparm
get2ndparm
liefert als Rückgabewert einen unsigned long, das dem EAX-Register entspricht.
liefert als Rückgabewert einen Zeiger mit dem Inhalt des EAX-Registers.
oder
muss die erste Anweisung im Programmcode sein, da Hochsprachen
getdword
liefert als Rückgabewert das EBX der Task. Dabei wird das Register EAX
Betriebssystem-Eigenschaften von RMOS3
8.2 Multiprocessing unter RMOS3
und
getdword
,
getdword
nicht
getparm
87