Topic : TOS - das Betriebssystem Author : Version : tos.hyp (5. März 2013) Subject : Programmieren/Atari Nodes : 3001 Index Size : 93602 HCP-Version : 5 Compiled on : Atari @charset : atarist @lang : @default : Titel @help : @options : +g -i -s +x +zz -t4 @width : 70 View Ref-File11.14.3 Der Shutdown aus Sicht der Applikation TOS Zunächst sei darauf hingewiesen, daß sich der Shutdown Mechanismus in MultiTOS von dem in MagiC unterscheidet: Ataris MultiTOS verschickt eine AP_TERM-Nachricht nur an solche Applikationen, die dem AES per shel_write (Opcode 9) explizit mitgeteilt haben, daß sie die AP_TERM- Nachricht verstehen; MagiC hingegen verschickt die Nachricht an alle aktiven Applikationen. Der Shutdown wird vom AES genau dann als erfolgreich angesehen, wenn sich alle Programme, die explizit AP_TERM verstehen, beendet haben. Sollte eine Applikation bekanntgeben daß sie sich nicht beenden kann, so wird der Shutdown abgebrochen. Aus diesen Gründen hat jedes Programm, daß eine AP_TERM Nachricht empfängt prinzipiell nur zwei Möglichkeiten: ∙ es beendet sich sofort ∙ es macht den folgenden Aufruf msg[0] = AP_TFAIL; msg[1] = err; shel_write(10, 0, 0, (char *) msg, NULL); und informiert damit das AES, daß der Vorgang mit dem Fehlercode err unterbrochen wurde. Die Applikation, die den Shutdown verursacht hat, bekommt die ap_id und den Fehlercode der unterbrechenden Applikation mitgeteilt. Reagiert die Applikation hingegen anders, d.h. ignoriert sie die AP_TERM Nachricht, so hängt das Verhalten des Systems davon ab, ob mitgeteilt wurde daß die AP_TERM-Nachricht verstanden wird. Im Klartext: ∙ Versteht die Applikation explizit AP_TERM, so geht das System davon aus, daß die Applikation z.Zt. keine Nachrichten empfangen kann. Der ShutDown wird nicht unterbrochen, sondern dauert solange, bis der Aufrufer (i.a. das Programm SHUTDOWN) den Shutdown abbricht. SHUTDOWN verwendet dazu einen Timeout von 3 Sekunden, d.h. wenn 3 Sekunden nach Beginn des Shutdown noch Programme aktiv sind, die AP_TERM verstehen, bricht das Programm den Shutdown-Prozeß ab. ∙ Versteht die Applikation nicht explizit AP_TERM, meldet das System dem Initiator des Shutdown (i.a. SHUTDOWN.PRG) den erfolgreichen Abschluß des Shutdown-Vorgangs. Nur weil SHUTDOWN.PRG so nachsichtig mit alten Programmen ist, testet es, ob noch Applikationen aktiv sind, und gibt ggf. eine Meldung aus. Dabei kann man in SHUTDOWN.INF Programme angeben, die nicht zu einer Fehlermeldung führen sollen, d.h. die nicht beendet zu werden brauchen. Hinweis: Wurde der Shutdown per Alternate-Control-Delete ausgelöst, so bekommen zunächst nur der Writeback-Daemon und die Applikation mit ID 0 eine AP_TERM-Nachricht. Als Absender ist dabei -1 eingetragen. Die Applikation 0 (i.a. der Desktop) beendet sich dann und startet das Shutdown-Programm. Querverweis: Shutdown beim Initiator shel_write Shutdown in MultiTOS Shutdown in MagiC