wc                 50 kern/include/wchan.h void wchan_destroy(struct wchan *wc);
wc                 56 kern/include/wchan.h bool wchan_isempty(struct wchan *wc);
wc                 61 kern/include/wchan.h void wchan_lock(struct wchan *wc);
wc                 62 kern/include/wchan.h void wchan_unlock(struct wchan *wc);
wc                 72 kern/include/wchan.h void wchan_sleep(struct wchan *wc);
wc                 81 kern/include/wchan.h void wchan_wakeone(struct wchan *wc);
wc                 82 kern/include/wchan.h void wchan_wakeall(struct wchan *wc);
wc                548 kern/thread/thread.c thread_switch(threadstate_t newstate, struct wchan *wc)
wc                591 kern/thread/thread.c 		cur->t_wchan_name = wc->wc_name;
wc                605 kern/thread/thread.c 		threadlist_addtail(&wc->wc_threads, cur);
wc                606 kern/thread/thread.c 		wchan_unlock(wc);
wc                977 kern/thread/thread.c 	struct wchan *wc;
wc                979 kern/thread/thread.c 	wc = kmalloc(sizeof(*wc));
wc                980 kern/thread/thread.c 	if (wc == NULL) {
wc                983 kern/thread/thread.c 	spinlock_init(&wc->wc_lock);
wc                984 kern/thread/thread.c 	threadlist_init(&wc->wc_threads);
wc                985 kern/thread/thread.c 	wc->wc_name = name;
wc                986 kern/thread/thread.c 	return wc;
wc                994 kern/thread/thread.c wchan_destroy(struct wchan *wc)
wc                996 kern/thread/thread.c 	spinlock_cleanup(&wc->wc_lock);
wc                997 kern/thread/thread.c 	threadlist_cleanup(&wc->wc_threads);
wc                998 kern/thread/thread.c 	kfree(wc);
wc               1005 kern/thread/thread.c wchan_lock(struct wchan *wc)
wc               1007 kern/thread/thread.c 	spinlock_acquire(&wc->wc_lock);
wc               1011 kern/thread/thread.c wchan_unlock(struct wchan *wc)
wc               1013 kern/thread/thread.c 	spinlock_release(&wc->wc_lock);
wc               1023 kern/thread/thread.c wchan_sleep(struct wchan *wc)
wc               1028 kern/thread/thread.c 	thread_switch(S_SLEEP, wc);
wc               1035 kern/thread/thread.c wchan_wakeone(struct wchan *wc)
wc               1040 kern/thread/thread.c 	spinlock_acquire(&wc->wc_lock);
wc               1041 kern/thread/thread.c 	target = threadlist_remhead(&wc->wc_threads);
wc               1046 kern/thread/thread.c 	spinlock_release(&wc->wc_lock);
wc               1060 kern/thread/thread.c wchan_wakeall(struct wchan *wc)
wc               1071 kern/thread/thread.c 	spinlock_acquire(&wc->wc_lock);
wc               1072 kern/thread/thread.c 	while ((target = threadlist_remhead(&wc->wc_threads)) != NULL) {
wc               1079 kern/thread/thread.c 	spinlock_release(&wc->wc_lock);
wc               1098 kern/thread/thread.c wchan_isempty(struct wchan *wc)
wc               1102 kern/thread/thread.c 	spinlock_acquire(&wc->wc_lock);
wc               1103 kern/thread/thread.c 	ret = threadlist_isempty(&wc->wc_threads);
wc               1104 kern/thread/thread.c 	spinlock_release(&wc->wc_lock);