1 #ifndef EXEC_SEMAPHORES_H 2 #define EXEC_SEMAPHORES_H 3 4 /* 5 exec semaphore definitions (V50) 6 7 Copyright © 2002 The MorphOS Development Team, All Rights Reserved. 8 */ 9 10 #ifndef EXEC_NODES_H 11 # include <exec/nodes.h> 12 #endif 13 14 #ifndef EXEC_LISTS_H 15 # include <exec/lists.h> 16 #endif 17 18 #ifndef EXEC_TASKS_H 19 # include <exec/tasks.h> 20 #endif 21 22 #ifndef EXEC_PORTS_H 23 # include <exec/ports.h> 24 #endif 25 26 #pragma pack(2) 27 28 29 /* 30 * Shouldn't be available public.. 31 */ 32 struct SemaphoreRequest 33 { 34 struct MinNode sr_Link; 35 struct Task *sr_Waiter; 36 }; 37 38 struct SignalSemaphore 39 { 40 struct Node ss_Link; 41 WORD ss_NestCount; 42 struct MinList ss_WaitQueue; 43 struct SemaphoreRequest ss_MultipleLink; 44 struct Task *ss_Owner; 45 WORD ss_QueueCount; 46 }; 47 48 struct SemaphoreMessage 49 { 50 struct Message ssm_Message; 51 struct SignalSemaphore *ssm_Semaphore; 52 }; 53 54 #define SM_SHARED (1) 55 #define SM_EXCLUSIVE (0) 56 57 #ifdef EXEC_OBSOLETE 58 struct Semaphore 59 { 60 struct MsgPort sm_MsgPort; 61 WORD sm_Bids; 62 }; 63 #define sm_LockMsg mp_SigTask 64 #endif 65 66 67 #pragma pack() 68 69 #endif