Lines Matching refs:wq

44 waitq_init(waitq_t *wq)
46 DISP_LOCK_INIT(&wq->wq_lock);
47 wq->wq_first = NULL;
48 wq->wq_count = 0;
49 wq->wq_blocked = B_TRUE;
53 waitq_fini(waitq_t *wq)
55 ASSERT(wq->wq_count == 0);
56 ASSERT(wq->wq_first == NULL);
57 ASSERT(wq->wq_blocked == B_TRUE);
58 ASSERT(!DISP_LOCK_HELD(&wq->wq_lock));
60 DISP_LOCK_DESTROY(&wq->wq_lock);
119 waitq_link(waitq_t *wq, kthread_t *t)
126 ASSERT(DISP_LOCK_HELD(&wq->wq_lock));
129 tpp = &wq->wq_first;
149 wq->wq_count++;
150 t->t_waitq = wq;
154 waitq_unlink(waitq_t *wq, kthread_t *t)
160 ASSERT(DISP_LOCK_HELD(&wq->wq_lock));
161 ASSERT(t->t_waitq == wq);
191 wq->wq_count--;
203 waitq_enqueue(waitq_t *wq, kthread_t *t)
210 disp_lock_enter_high(&wq->wq_lock);
215 if (wq->wq_blocked) {
216 disp_lock_exit_high(&wq->wq_lock);
232 waitq_link(wq, t);
234 THREAD_WAIT(t, &wq->wq_lock);
245 waitq_t *wq = t->t_waitq;
249 ASSERT(wq != NULL);
251 waitq_unlink(wq, t);
253 waitq_link(wq, t);
257 waitq_dequeue(waitq_t *wq, kthread_t *t)
260 ASSERT(t->t_waitq == wq);
263 waitq_unlink(wq, t);
279 waitq_isempty(waitq_t *wq)
281 return (wq->wq_count == 0);
291 waitq_t *wq = t->t_waitq;
296 if (wq == NULL)
298 waitq_dequeue(wq, t);
306 waitq_takeone(waitq_t *wq)
310 disp_lock_enter(&wq->wq_lock);
314 if ((t = wq->wq_first) != NULL)
315 waitq_dequeue(wq, wq->wq_first);
317 disp_lock_exit(&wq->wq_lock);
326 waitq_runfirst(waitq_t *wq)
330 t = waitq_takeone(wq);
348 waitq_runone(waitq_t *wq)
350 (void) waitq_runfirst(wq);
357 waitq_runall(waitq_t *wq)
359 while (waitq_runfirst(wq) != NULL)
369 waitq_block(waitq_t *wq)
371 ASSERT(!wq->wq_blocked);
372 disp_lock_enter(&wq->wq_lock);
373 wq->wq_blocked = B_TRUE;
374 disp_lock_exit(&wq->wq_lock);
375 waitq_runall(wq);
376 ASSERT(waitq_isempty(wq));
383 waitq_unblock(waitq_t *wq)
385 disp_lock_enter(&wq->wq_lock);
387 ASSERT(waitq_isempty(wq));
388 ASSERT(wq->wq_blocked);
390 wq->wq_blocked = B_FALSE;
392 disp_lock_exit(&wq->wq_lock);