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