add flag for spinning tasks
[AROS.git] / compiler / include / exec / semaphores.h
blob505c5a5232d277cf650de0ea1588a76638f09092
1 #ifndef EXEC_SEMAPHORES_H
2 #define EXEC_SEMAPHORES_H
4 /*
5 Copyright © 1995-2001, The AROS Development Team. All rights reserved.
6 $Id$
8 Desc: Semaphore handling
9 Lang: english
12 #ifndef EXEC_LISTS_H
13 # include <exec/lists.h>
14 #endif
16 #ifndef EXEC_NODES_H
17 # include <exec/nodes.h>
18 #endif
20 #ifndef EXEC_PORTS_H
21 # include <exec/ports.h>
22 #endif
24 #ifndef EXEC_TASKS_H
25 # include <exec/tasks.h>
26 #endif
29 /* Signal Semaphores */
31 /* Private structure for use in ObtainSemaphore */
32 struct SemaphoreRequest
34 struct MinNode sr_Link;
35 struct Task * sr_Waiter;
38 struct SignalSemaphore
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;
48 /* For use in Procure()/Vacate() */
49 struct SemaphoreMessage
51 struct Message ssm_Message;
52 struct SignalSemaphore * ssm_Semaphore;
55 #define SM_EXCLUSIVE (0L)
56 #define SM_SHARED (1L)
58 #endif /* EXEC_SEMAPHORES_H */