Loading qemu-coroutine-lock.c +8 −0 Original line number Diff line number Diff line Loading @@ -61,6 +61,14 @@ void coroutine_fn qemu_co_queue_wait(CoQueue *queue) assert(qemu_in_coroutine()); } void coroutine_fn qemu_co_queue_wait_insert_head(CoQueue *queue) { Coroutine *self = qemu_coroutine_self(); QTAILQ_INSERT_HEAD(&queue->entries, self, co_queue_next); qemu_coroutine_yield(); assert(qemu_in_coroutine()); } bool qemu_co_queue_next(CoQueue *queue) { Coroutine *next; Loading qemu-coroutine.h +6 −0 Original line number Diff line number Diff line Loading @@ -117,6 +117,12 @@ void qemu_co_queue_init(CoQueue *queue); */ void coroutine_fn qemu_co_queue_wait(CoQueue *queue); /** * Adds the current coroutine to the head of the CoQueue and transfers control to the * caller of the coroutine. */ void coroutine_fn qemu_co_queue_wait_insert_head(CoQueue *queue); /** * Restarts the next coroutine in the CoQueue and removes it from the queue. * Loading Loading
qemu-coroutine-lock.c +8 −0 Original line number Diff line number Diff line Loading @@ -61,6 +61,14 @@ void coroutine_fn qemu_co_queue_wait(CoQueue *queue) assert(qemu_in_coroutine()); } void coroutine_fn qemu_co_queue_wait_insert_head(CoQueue *queue) { Coroutine *self = qemu_coroutine_self(); QTAILQ_INSERT_HEAD(&queue->entries, self, co_queue_next); qemu_coroutine_yield(); assert(qemu_in_coroutine()); } bool qemu_co_queue_next(CoQueue *queue) { Coroutine *next; Loading
qemu-coroutine.h +6 −0 Original line number Diff line number Diff line Loading @@ -117,6 +117,12 @@ void qemu_co_queue_init(CoQueue *queue); */ void coroutine_fn qemu_co_queue_wait(CoQueue *queue); /** * Adds the current coroutine to the head of the CoQueue and transfers control to the * caller of the coroutine. */ void coroutine_fn qemu_co_queue_wait_insert_head(CoQueue *queue); /** * Restarts the next coroutine in the CoQueue and removes it from the queue. * Loading