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-File8.22.51 XAESMSG TOS Diese Struktur ist wie folgt definiert: typedef struct { int16_t dst_apid; /* ID der Ziel-Applikation */ int16_t unique_flg; /* Nachrichten überschreiben? */ void *attached_mem; /* Zeiger auf Speicherblock */ int16_t *msgbuf; /* Nachrichenpuffer */ } XAESMSG; Hinweis: Die Komponente unique_flg gibt an, ob gleichartige Nachrichten (d.h. solche mit gleichem Nachrichtentyp msgbuf[0]) von der neuen Nachricht überschrieben werden sollen. Wenn attached_mem nicht NULL ist, wird damit ein per Malloc allozierter Speicherblock angegeben, der die erweiterten Nachrichten- Informationen enthält. Die Länge dieses Blocks ist beliebig und für das System uninteressant, sie könnte z.B. als erstes Langwort des Blocks oder in msgbuf [4,5] übergeben werden. Das System weist den Speicherblock der Zielapplikation zu und übermittelt dessen Adresse in msgbuf[6,7]. Wichtig: Die aufrufende Applikation muß davon ausgehen, daß msgbuf[6,7] nach dem Aufruf von appl_write zerstört sind. Das System behält sich vor, den Inhalt des Speicherblocks umzukopieren und den übergebenen Block freizugeben. Der Aufrufer darf nach dem appl_write nicht mehr auf den Block zugreifen und ihn auf gar keinen Fall freigeben! Gibt appl_write einen Fehlercode zurück, so ist der Block nicht übergeben worden und gehört nach wie vor der aufrufenden Applikation. Ein Fehler tritt dann auf, wenn: ∙ die Zielapplikation ungültig (nicht existent oder eingefroren) ist ∙ der Nachrichtenpuffer der Zielapplikation voll ist ∙ die Zielapplikation kein Prozeß ist (z.B. der SCRENMGR) und ein attached memory block angegeben worden ist. Querverweis: AES appl_write GEM