Lines Matching refs:ws
438 sbq->ws = kzalloc_node(SBQ_WAIT_QUEUES * sizeof(*sbq->ws), flags, node); in sbitmap_queue_init_node()
439 if (!sbq->ws) { in sbitmap_queue_init_node()
445 init_waitqueue_head(&sbq->ws[i].wait); in sbitmap_queue_init_node()
446 atomic_set(&sbq->ws[i].wait_cnt, sbq->wake_batch); in sbitmap_queue_init_node()
467 atomic_set(&sbq->ws[i].wait_cnt, 1); in __sbitmap_queue_update_wake_batch()
588 struct sbq_wait_state *ws = &sbq->ws[wake_index]; in sbq_wake_ptr() local
590 if (waitqueue_active(&ws->wait) && atomic_read(&ws->wait_cnt)) { in sbq_wake_ptr()
593 return ws; in sbq_wake_ptr()
604 struct sbq_wait_state *ws; in __sbq_wake_up() local
612 ws = sbq_wake_ptr(sbq); in __sbq_wake_up()
613 if (!ws) in __sbq_wake_up()
616 cur = atomic_read(&ws->wait_cnt); in __sbq_wake_up()
626 } while (!atomic_try_cmpxchg(&ws->wait_cnt, &cur, wait_cnt)); in __sbq_wake_up()
633 return !waitqueue_active(&ws->wait); in __sbq_wake_up()
643 ret = !waitqueue_active(&ws->wait); in __sbq_wake_up()
650 wake_up_nr(&ws->wait, wake_batch); in __sbq_wake_up()
670 atomic_set(&ws->wait_cnt, wake_batch); in __sbq_wake_up()
761 struct sbq_wait_state *ws = &sbq->ws[wake_index]; in sbitmap_queue_wake_all() local
763 if (waitqueue_active(&ws->wait)) in sbitmap_queue_wake_all()
764 wake_up(&ws->wait); in sbitmap_queue_wake_all()
794 struct sbq_wait_state *ws = &sbq->ws[i]; in sbitmap_queue_show() local
797 atomic_read(&ws->wait_cnt), in sbitmap_queue_show()
798 waitqueue_active(&ws->wait) ? "active" : "inactive"); in sbitmap_queue_show()
808 struct sbq_wait_state *ws, in sbitmap_add_wait_queue() argument
814 add_wait_queue(&ws->wait, &sbq_wait->wait); in sbitmap_add_wait_queue()
830 struct sbq_wait_state *ws, in sbitmap_prepare_to_wait() argument
837 prepare_to_wait_exclusive(&ws->wait, &sbq_wait->wait, state); in sbitmap_prepare_to_wait()
841 void sbitmap_finish_wait(struct sbitmap_queue *sbq, struct sbq_wait_state *ws, in sbitmap_finish_wait() argument
844 finish_wait(&ws->wait, &sbq_wait->wait); in sbitmap_finish_wait()