{$ifndef EXEC_SEMAPHORES_H}
CONST EXEC_SEMAPHORES_H = 0;
{$ifndef EXEC_NODES_H;incl"exec/nodes.h";endif}
{$ifndef EXEC_LISTS_H;incl"exec/lists.h";endif}
{$ifndef EXEC_PORTS_H;incl"exec/ports.h";endif}
{$ifndef EXEC_TASKS_H;incl"exec/tasks.h";endif}
TYPE p_Semaphore = ^Semaphore;
     Semaphore = record
                   sm_MsgPort: MsgPort;
                   sm_Bids: integer
                 end;
     p_SemaphoreRequest = ^SemaphoreRequest;
     SemaphoreRequest = record
                          sr_Link: MinNode;
                          sr_Waiter: p_Task
                        end;
     p_SignalSemaphore = ^SignalSemaphore;
     SignalSemaphore = record
                         ss_Link: Node;
                         ss_NestCount: integer;
                         ss_WaitQueue: MinList;
                         ss_MultipleLink: SemaphoreRequest;
                         ss_Owner: p_Task;
                         ss_QueueCount: Integer
                       end;
{$endif}
{$ifndef EXEC_SEMAPHORES_LIB}
Const EXEC_SEMAPHORES_LIB = 4711;
Library SysBase:
-540: Function Procure(a0,a1: Ptr): boolean;
-546: Procedure Vacate(a0: Ptr);
-558: Procedure InitSemaphore(a0: p_SignalSemaphore);
-564: Procedure ObtainSemaphore(a0: p_SignalSemaphore);
-570: Procedure ReleaseSemaphore(a0: p_SignalSemaphore);
-576: Function AttemptSemaphore(a0: p_SignalSemaphore): integer;
-582: Procedure ObtainSemaphoreList(a0: Ptr);
-588: Procedure ReleaseSemaphoreList(a0: Ptr);
-594: Function FindSemaphore(a1: stryng): p_SignalSemaphore;
-600: Procedure AddSempahore(a1: p_SignalSemaphore);
-606: Procedure RemSemaphore(a1: p_SignalSemaphore);
end;
{$endif}
