wchan
void wchan(const KINFO *, const struct varent *);
{"nwchan", "WCHAN", NULL, 0, lpvar, NULL, 8, LPOFF(wchan), KPTR, "lx", NULL},
{"wchan", "WCHAN", NULL, LJUST, wchan, NULL, WMESGLEN, 0, 0, NULL, NULL},
void *wchan;
ISP_GET_PC_ADDR(isp, chan, target_proc, wchan);
lksleep(wchan, &isp->isp_lock, PUSER, "tsnooze", 0);
int rchan, wchan;
m->wchan = 0;
m->wchan = 1;
retval = lksleep(&m->wchan, &m->qlock,
m->wchan = 0;
if (!(m->rchan || m->wchan))
if (m->wchan) {
wakeup(&m->wchan);
m->wchan = 0;
if (m->wchan) {
wakeup(&m->wchan);
m->wchan = 0;
m->wchan = 0;
m->wchan = 1;
retval = lksleep(&m->wchan, &m->qlock,
m->wchan = 0;
sleepq_wclookup(const void *wchan)
sc = SLEEPQ_LOOKUP(wchan);
if (wc->wc_wchan == wchan)
sleepq_lock(const void *wchan)
sc = SLEEPQ_LOOKUP(wchan);
if (wc->wc_wchan == wchan) {
wc->wc_wchan = wchan;
sleepq_release(const void *wchan)
wc = sleepq_wclookup(wchan);
sleepq_add(const void *wchan, struct lock_object *lock, const char *wmesg,
wc = sleepq_wclookup(wchan);
tsleep_interlock(wchan, domain);
sleepq_set_timeout_sbt(const void *wchan, sbintime_t sbt, sbintime_t pr,
KKASSERT(wc && wc->wc_wchan == wchan);
sleepq_sleepcnt(const void *wchan, int queue)
wc = sleepq_wclookup(wchan);
sleepq_wait(const void *wchan, int pri)
KKASSERT(wc != NULL && wc->wc_wchan == wchan);
sleepq_wait_sig(const void *wchan, int pri)
KKASSERT(wc != NULL && wc->wc_wchan == wchan);
sleepq_timedwait(const void *wchan, int pri)
KKASSERT(wc != NULL && wc->wc_wchan == wchan);
sleepq_timedwait_sig(const void *wchan, int pri)
KKASSERT(wc != NULL && wc->wc_wchan == wchan);
sleepq_type(const void *wchan)
wc = sleepq_wclookup(wchan);
sleepq_signal(const void *wchan, int flags, int pri, int queue)
wakeup_domain_one(wchan, domain);
sleepq_broadcast(const void *wchan, int flags, int pri, int queue)
wakeup_domain(wchan, domain);
#define SLEEPQ_HASH(wchan) ((((uintptr_t)(wchan) >> 10) ^ \
((uintptr_t)(wchan) & SLEEPQ_HMASK)))
#define SLEEPQ_LOOKUP(wchan) &sleepq_chains[SLEEPQ_HASH(wchan)]
const char *wchan;
#define _PROP_POOL_INIT(pp, size, wchan) \
MALLOC_DEFINE(M_##pp, wchan, wchan); \
void sleepq_add(const void *wchan, struct lock_object *lock,
int sleepq_broadcast(const void *wchan, int flags, int pri, int queue);
void sleepq_lock(const void *wchan);
void sleepq_release(const void *wchan);
void sleepq_remove(struct thread *td, const void *wchan);
int sleepq_signal(const void *wchan, int flags, int pri, int queue);
void sleepq_set_timeout_sbt(const void *wchan, sbintime_t sbt,
#define sleepq_set_timeout(wchan, timo) \
sleepq_set_timeout_sbt((wchan), tick_sbt * (timo), 0, C_HARDCLOCK)
u_int sleepq_sleepcnt(const void *wchan, int queue);
int sleepq_timedwait(const void *wchan, int pri);
int sleepq_timedwait_sig(const void *wchan, int pri);
int sleepq_type(const void *wchan);
void sleepq_wait(const void *wchan, int pri);
int sleepq_wait_sig(const void *wchan, int pri);
struct sleepqueue *sleepq_lookup(const void *wchan);