Lines Matching refs:queue

11     MppQueue *queue = mpp_malloc(MppQueue, 1);  in mpp_queue_create()  local
13 queue->list = mpp_list_create(func); in mpp_queue_create()
14 sem_init(&queue->queue_pending, 0, 0); in mpp_queue_create()
15 queue->flush_flag = 0; in mpp_queue_create()
17 return queue; in mpp_queue_create()
20 void mpp_queue_destroy(MppQueue *queue) in mpp_queue_destroy() argument
22 mpp_list_destroy(queue->list); in mpp_queue_destroy()
23 mpp_free(queue); in mpp_queue_destroy()
26 rk_s32 mpp_queue_push(MppQueue *queue, void *data, rk_s32 size) in mpp_queue_push() argument
30 ret = mpp_list_add_at_tail(queue->list, data, size); in mpp_queue_push()
31 queue->flush_flag = 0; in mpp_queue_push()
32 sem_post(&queue->queue_pending); in mpp_queue_push()
37 rk_s32 mpp_queue_pull(MppQueue *queue, void *data, rk_s32 size) in mpp_queue_pull() argument
41 if (!queue->flush_flag) in mpp_queue_pull()
42 sem_wait(&queue->queue_pending); in mpp_queue_pull()
44 mpp_mutex_cond_lock(&queue->list->cond_lock); in mpp_queue_pull()
45 if (!mpp_list_size(queue->list)) { in mpp_queue_pull()
46 mpp_mutex_cond_unlock(&queue->list->cond_lock); in mpp_queue_pull()
50 ret = mpp_list_del_at_head(queue->list, data, size); in mpp_queue_pull()
51 mpp_mutex_cond_unlock(&queue->list->cond_lock); in mpp_queue_pull()
56 rk_s32 mpp_queue_flush(MppQueue *queue) in mpp_queue_flush() argument
58 if (queue->flush_flag) in mpp_queue_flush()
61 queue->flush_flag = 1; in mpp_queue_flush()
62 sem_post(&queue->queue_pending); in mpp_queue_flush()
63 mpp_list_flush(queue->list); in mpp_queue_flush()