Lines Matching refs:wchan
28 WaitChannel_Init(WaitChannel *wchan, const char *name)
30 TAILQ_INIT(&wchan->chanQueue);
31 strncpy(&wchan->name[0], name, WAITCHANNEL_NAMELEN);
32 Spinlock_Init(&wchan->lock, name, SPINLOCK_TYPE_NORMAL);
35 LIST_INSERT_HEAD(&chanList, wchan, chanList);
40 WaitChannel_Destroy(WaitChannel *wchan)
42 ASSERT(TAILQ_EMPTY(&wchan->chanQueue));
45 LIST_REMOVE(wchan, chanList);
48 Spinlock_Destroy(&wchan->lock);
57 WaitChannel_Lock(WaitChannel *wchan)
59 Spinlock_Lock(&wchan->lock);
71 WaitChannel_Sleep(WaitChannel *wchan)
76 TAILQ_INSERT_TAIL(&wchan->chanQueue, thr, chanQueue);
77 Spinlock_Unlock(&wchan->lock);
91 WaitChannel_Wake(WaitChannel *wchan)
95 Spinlock_Lock(&wchan->lock);
97 thr = TAILQ_FIRST(&wchan->chanQueue);
99 TAILQ_REMOVE(&wchan->chanQueue, thr, chanQueue);
104 Spinlock_Unlock(&wchan->lock);
116 WaitChannel_WakeAll(WaitChannel *wchan)
121 Spinlock_Lock(&wchan->lock);
123 TAILQ_FOREACH_SAFE(thr, &wchan->chanQueue, chanQueue, thrTemp) {
124 TAILQ_REMOVE(&wchan->chanQueue, thr, chanQueue);
129 Spinlock_Unlock(&wchan->lock);