Lines Matching refs:dataq
59 dataq_enqueue(dataq_t *dataq, void *in) in dataq_enqueue() argument
67 (void) pthread_mutex_lock(&dataq->lock); in dataq_enqueue()
68 assert(dataq_check(dataq)); in dataq_enqueue()
69 ll_enqueue(&dataq->data, &ptr->list); in dataq_enqueue()
70 dataq->num_data++; in dataq_enqueue()
71 if (dataq->num_waiters) { in dataq_enqueue()
73 sleeper = (dataq_waiter_t *)ll_peek(&dataq->waiters); in dataq_enqueue()
77 assert(dataq_check(dataq)); in dataq_enqueue()
78 (void) pthread_mutex_unlock(&dataq->lock); in dataq_enqueue()
83 dataq_dequeue(dataq_t *dataq, void **outptr, int try) in dataq_dequeue() argument
88 (void) pthread_mutex_lock(&dataq->lock); in dataq_dequeue()
89 if ((dataq->num_waiters > 0) || in dataq_dequeue()
90 ((dptr = (dataq_data_t *)ll_dequeue(&dataq->data)) == NULL)) { in dataq_dequeue()
93 (void) pthread_mutex_unlock(&dataq->lock); in dataq_dequeue()
98 dataq->num_waiters++; in dataq_dequeue()
99 ll_enqueue(&dataq->waiters, &wait.list); in dataq_dequeue()
101 (void) pthread_cond_wait(&wait.cv, &dataq->lock); in dataq_dequeue()
102 (void) ll_dequeue(&dataq->waiters); in dataq_dequeue()
103 dataq->num_waiters--; in dataq_dequeue()
105 dptr = (dataq_data_t *)ll_dequeue(&dataq->data); in dataq_dequeue()
107 dataq->num_data--; in dataq_dequeue()
108 if (dataq->num_data && dataq->num_waiters) { in dataq_dequeue()
110 sleeper = (dataq_waiter_t *)ll_peek(&dataq->waiters); in dataq_dequeue()
114 (void) pthread_mutex_unlock(&dataq->lock); in dataq_dequeue()
137 dataq_destroy(dataq_t *dataq) in dataq_destroy() argument
139 (void) pthread_mutex_destroy(&dataq->lock); in dataq_destroy()
140 ll_mapf(&dataq->data, dataq_data_destroy); in dataq_destroy()
141 ll_mapf(&dataq->waiters, dataq_waiters_destroy); in dataq_destroy()