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