Lines Matching refs:dataq
57 dataq_enqueue(dataq_t *dataq, void *in) in dataq_enqueue() argument
65 (void) pthread_mutex_lock(&dataq->lock); in dataq_enqueue()
66 assert(dataq_check(dataq)); in dataq_enqueue()
67 ll_enqueue(&dataq->data, &ptr->list); in dataq_enqueue()
68 dataq->num_data++; in dataq_enqueue()
69 if (dataq->num_waiters) { in dataq_enqueue()
71 sleeper = (dataq_waiter_t *)ll_peek(&dataq->waiters); in dataq_enqueue()
75 assert(dataq_check(dataq)); in dataq_enqueue()
76 (void) pthread_mutex_unlock(&dataq->lock); in dataq_enqueue()
81 dataq_dequeue(dataq_t *dataq, void **outptr, int try) in dataq_dequeue() argument
86 (void) pthread_mutex_lock(&dataq->lock); in dataq_dequeue()
87 if ((dataq->num_waiters > 0) || in dataq_dequeue()
88 ((dptr = (dataq_data_t *)ll_dequeue(&dataq->data)) == NULL)) { in dataq_dequeue()
91 (void) pthread_mutex_unlock(&dataq->lock); in dataq_dequeue()
96 dataq->num_waiters++; in dataq_dequeue()
97 ll_enqueue(&dataq->waiters, &wait.list); in dataq_dequeue()
99 (void) pthread_cond_wait(&wait.cv, &dataq->lock); in dataq_dequeue()
100 (void) ll_dequeue(&dataq->waiters); in dataq_dequeue()
101 dataq->num_waiters--; in dataq_dequeue()
103 dptr = (dataq_data_t *)ll_dequeue(&dataq->data); in dataq_dequeue()
105 dataq->num_data--; in dataq_dequeue()
106 if (dataq->num_data && dataq->num_waiters) { in dataq_dequeue()
108 sleeper = (dataq_waiter_t *)ll_peek(&dataq->waiters); in dataq_dequeue()
112 (void) pthread_mutex_unlock(&dataq->lock); in dataq_dequeue()
135 dataq_destroy(dataq_t *dataq) in dataq_destroy() argument
137 (void) pthread_mutex_destroy(&dataq->lock); in dataq_destroy()
138 ll_mapf(&dataq->data, dataq_data_destroy); in dataq_destroy()
139 ll_mapf(&dataq->waiters, dataq_waiters_destroy); in dataq_destroy()