Improvements to comments.
[AROS.git] / compiler / include / exec / ports.h
blob666a9cc30f1e7f461170c5e2822b992ecffa1f59
1 #ifndef EXEC_PORTS_H
2 #define EXEC_PORTS_H
4 /*
5 Copyright © 1995-2011, The AROS Development Team. All rights reserved.
6 $Id$
8 Desc: Message ports and messages
9 Lang: english
12 #ifndef EXEC_NODES_H
13 # include "exec/nodes.h"
14 #endif
15 #ifndef EXEC_LISTS_H
16 # include "exec/lists.h"
17 #endif
19 /* MsgPort */
20 struct MsgPort
22 struct Node mp_Node;
23 UBYTE mp_Flags;
24 UBYTE mp_SigBit; /* Signal bit number */
25 void * mp_SigTask; /* Object to be signalled */
26 struct List mp_MsgList; /* Linked list of messages */
29 #define mp_SoftInt mp_SigTask /* Alias */
31 /* mp_Flags: Port arrival actions (PutMsg) */
32 #define PF_ACTION 7 /* Mask */
34 #define PA_SIGNAL 0 /* Signal task in mp_SigTask */
35 #define PA_SOFTINT 1 /* Signal SoftInt in mp_SoftInt/mp_SigTask */
36 #define PA_IGNORE 2 /* Ignore arrival */
38 #define PA_CALL 3 /* Call function in mp_SigTask. This was never
39 documented on AmigaOS and was never defined
40 but would work for mp_Flags == 3 */
42 #define PA_FASTCALL 4 /* AROS extension. Like PA_SOFTINT, calls an
43 Interrupt in mp_SoftInt, but passes the
44 message as the third argument without
45 adding it to the message list and so doesn't
46 require any locking, task switching or
47 Disable()/Enable() pairs */
49 /* Message */
50 struct Message
52 struct Node mn_Node;
53 struct MsgPort * mn_ReplyPort; /* message reply port */
54 UWORD mn_Length; /* total message length, in bytes */
55 /* (include the size of the Message
56 structure in the length) */
59 struct MagicMessage
61 struct Node mn_Node;
62 struct MsgPort * mn_ReplyPort; /* message reply port */
63 UWORD mn_Length; /* total message length, in bytes */
64 /* (include the size of the Message
65 structure in the length) */
66 ULONG mn_Magic; /* can be used to figure out the message sender */
67 ULONG mn_Version; /* version can be used to extend a message in later versions */
70 /* definition for entry Magic in Messages
71 Magic is introduced to prevent Multiple Ports, for example if you´r using
72 ScreenNotifications and DecorNotifications you must have two Ports as long
73 as you cannot figure out which Messsage ist posted. With Magic this is no
74 problem. */
76 #define MAGIC_DECORATOR 0x8000001
77 #define MAGIC_SCREENNOTIFY 0x8000002
79 #endif /* EXEC_PORTS_H */