Lines Matching full:queue

41  * - jobs queue lock: for each operation on the queue (push, pop, isEmpty?)
67 * We use a single global queue, but most of the functions are
70 static VncJobQueue *queue; variable
72 static void vnc_lock_queue(VncJobQueue *queue) in vnc_lock_queue() argument
74 qemu_mutex_lock(&queue->mutex); in vnc_lock_queue()
77 static void vnc_unlock_queue(VncJobQueue *queue) in vnc_unlock_queue() argument
79 qemu_mutex_unlock(&queue->mutex); in vnc_unlock_queue()
88 vnc_lock_queue(queue); in vnc_job_new()
90 vnc_unlock_queue(queue); in vnc_job_new()
105 vnc_lock_queue(queue); in vnc_job_add_rect()
107 vnc_unlock_queue(queue); in vnc_job_add_rect()
113 vnc_lock_queue(queue); in vnc_job_push()
114 if (queue->exit || QLIST_EMPTY(&job->rectangles)) { in vnc_job_push()
117 QTAILQ_INSERT_TAIL(&queue->jobs, job, next); in vnc_job_push()
118 qemu_cond_broadcast(&queue->cond); in vnc_job_push()
120 vnc_unlock_queue(queue); in vnc_job_push()
127 QTAILQ_FOREACH(job, &queue->jobs, next) { in vnc_has_job_locked()
137 vnc_lock_queue(queue); in vnc_jobs_join()
139 qemu_cond_wait(&queue->cond, &queue->mutex); in vnc_jobs_join()
141 vnc_unlock_queue(queue); in vnc_jobs_join()
230 static int vnc_worker_thread_loop(VncJobQueue *queue) in vnc_worker_thread_loop() argument
239 vnc_lock_queue(queue); in vnc_worker_thread_loop()
240 while (QTAILQ_EMPTY(&queue->jobs) && !queue->exit) { in vnc_worker_thread_loop()
241 qemu_cond_wait(&queue->cond, &queue->mutex); in vnc_worker_thread_loop()
243 /* Here job can only be NULL if queue->exit is true */ in vnc_worker_thread_loop()
244 job = QTAILQ_FIRST(&queue->jobs); in vnc_worker_thread_loop()
245 vnc_unlock_queue(queue); in vnc_worker_thread_loop()
247 if (queue->exit) { in vnc_worker_thread_loop()
324 vnc_lock_queue(queue); in vnc_worker_thread_loop()
325 QTAILQ_REMOVE(&queue->jobs, job, next); in vnc_worker_thread_loop()
326 vnc_unlock_queue(queue); in vnc_worker_thread_loop()
327 qemu_cond_broadcast(&queue->cond); in vnc_worker_thread_loop()
335 VncJobQueue *queue = g_new0(VncJobQueue, 1); in vnc_queue_init() local
337 qemu_cond_init(&queue->cond); in vnc_queue_init()
338 qemu_mutex_init(&queue->mutex); in vnc_queue_init()
339 QTAILQ_INIT(&queue->jobs); in vnc_queue_init()
340 return queue; in vnc_queue_init()
345 qemu_cond_destroy(&queue->cond); in vnc_queue_clear()
346 qemu_mutex_destroy(&queue->mutex); in vnc_queue_clear()
348 queue = NULL; /* Unset global queue */ in vnc_queue_clear()
353 VncJobQueue *queue = arg; in vnc_worker_thread() local
355 qemu_thread_get_self(&queue->thread); in vnc_worker_thread()
357 while (!vnc_worker_thread_loop(queue)) ; in vnc_worker_thread()
358 vnc_queue_clear(queue); in vnc_worker_thread()
364 return queue; /* Check global queue */ in vnc_worker_thread_running()
377 queue = q; /* Set global queue */ in vnc_start_worker_thread()