Lines Matching refs:queue
38 wsi_queue_init(struct wsi_queue *queue, int length)
45 ret = u_vector_init(&queue->vector, length, sizeof(uint32_t));
58 ret = pthread_cond_init(&queue->cond, &condattr);
62 ret = pthread_mutex_init(&queue->mutex, NULL);
70 pthread_cond_destroy(&queue->cond);
74 u_vector_finish(&queue->vector);
80 wsi_queue_destroy(struct wsi_queue *queue)
82 u_vector_finish(&queue->vector);
83 pthread_mutex_destroy(&queue->mutex);
84 pthread_cond_destroy(&queue->cond);
88 wsi_queue_push(struct wsi_queue *queue, uint32_t index)
92 pthread_mutex_lock(&queue->mutex);
94 if (u_vector_length(&queue->vector) == 0)
95 pthread_cond_signal(&queue->cond);
97 elem = u_vector_add(&queue->vector);
100 pthread_mutex_unlock(&queue->mutex);
107 wsi_queue_pull(struct wsi_queue *queue, uint32_t *index, uint64_t timeout)
112 pthread_mutex_lock(&queue->mutex);
129 while (u_vector_length(&queue->vector) == 0) {
130 ret = pthread_cond_timedwait(&queue->cond, &queue->mutex, &abstime);
143 uint32_t *elem = u_vector_remove(&queue->vector);
148 pthread_mutex_unlock(&queue->mutex);