1 
2 #ifndef __WAITCHANNEL_H__
3 #define __WAITCHANNEL_H__
4 
5 #include <sys/cdefs.h>
6 #include <sys/queue.h>
7 
8 #define WAITCHANNEL_NAMELEN    32
9 
10 typedef struct WaitChannel
11 {
12     Spinlock				lock;
13     char				name[WAITCHANNEL_NAMELEN];
14     LIST_ENTRY(WaitChannel)		chanList;
15     TAILQ_HEAD(WaitQueue, Thread)	chanQueue;
16 } WaitChannel;
17 
18 void WaitChannel_EarlyInit();
19 void WaitChannel_Init(WaitChannel *wc, const char *name);
20 void WaitChannel_Destroy(WaitChannel *wc);
21 void WaitChannel_Lock(WaitChannel *wc) __LOCK_EX(wc->lock);
22 void WaitChannel_Sleep(WaitChannel *wc) __UNLOCK_EX(wc->lock);
23 void WaitChannel_Wake(WaitChannel *wc);
24 void WaitChannel_WakeAll(WaitChannel *wc);
25 
26 #endif /* __WAITCHANNEL_H__ */
27 
28