•  Back 
  •  Allgemeines zum Shutdown 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  Help page 
  •  Show info about hypertext 
  •  View a new file 
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