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