•  Back 
  •  Kernelfunktionen für ein XFS 
  •  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.21.5.17  mxk_evnt_sem                                           TOS

 Name:         »evnt_sem«

 Parameter:

                d0 =  int mode
                a0 =  void *sem
                d1 =  long timeout

 Beschreibung: Für mode sind folgende Unterfunktionen möglich:

                0 SEM_FREE   Semaphore freigeben (ohne Taskwechsel!)
                1 SEM_SET    Semaphore setzen, ggf. warten
                2 SEM_TEST   Eigner der Semaphore ermitteln (ggf. 
                             NULL)
                3 SEM_CSET   Semaphore setzen, falls nicht schon 
                             gesetzt
                4 SEM_GET    Semaphore ermitteln, falls Name bekannt 
                             ist.
                5 SEM_CREATE Semaphore erstellen, d.h. neue einrichten
                6 SEM_DEL    Semaphore entfernen

               SEM_SET und SEM_CSET sind die einzigen Unterfunktionen, 
               die einen Taskwechsel auslösen können.

               Im Gegensatz zu wind_update() kann mit diesen Aufrufen 
               das Setzen und Freigeben von Semaphoren nicht 
               geschachtelt werden. Versucht man, eine bereits 
               reservierte Semaphore nochmal zu reservieren, gibt es 
               einen Fehlercode.

               Beim Freigeben der Semaphore wird kein Taskwechsel 
               durchgeführt, d.h. die Semaphore kann zwar ggf. jetzt 
               einer anderen Applikation gehören, die den Status 
               "ready" hat, aber sie hat noch keine Rechenzeit 
               bekommen. Wenn die Situation unkritisch ist, sollte in 
               jedem Fall anschließend ein appl_yield() durchgeführt 
               werden.

               Die Bildschirmsemaphore hat den Namen _SCR und darf mit 
               evnt_sem() nur mit der Unterfunktion SEM_TEST behandelt 
               werden.

               SEM_CREATE setzt den Erzeuger nicht automatisch als 
               Eigner. Dies ist nicht notwendig, weil kein Taskwechsel 
               stattgefunden hat. Also kann bedenkenlos ein SEM_SET 
               anschließend durchgeführt werden.

               SEM_DEL verlangt, daß der Löscher auch der Eigner ist. 
               Beim Löschen werden alle wartenden Applikationen 
               freigegeben, sie erhalten, wenn sie per 
               evnt_sem(SEM_SET, ..) warten, eine -2 als Rückgabewert. 
               Wer System-Semaphoren (solche, deren Namen mit '_' 
               beginnen) löscht, ist selbst schuld.

 Gruppe:       Kernelfunktionen

 Querverweis:  -