[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 05/10] coroutine: add qemu_co_runnable_schedule()
From: |
Lai Jiangshan |
Subject: |
[Qemu-devel] [PATCH 05/10] coroutine: add qemu_co_runnable_schedule() |
Date: |
Tue, 3 Apr 2012 16:38:12 +0800 |
split qemu_co_queue_next() as two parts:
the first part is dequeuing next from the wait queue.
the second part is schedule it to the runnable
queue(qemu_co_runnable_schedule())
Signed-off-by: Lai Jiangshan <address@hidden>
---
qemu-coroutine-lock.c | 9 +++++++--
1 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/qemu-coroutine-lock.c b/qemu-coroutine-lock.c
index 7c29bc4..6f47685 100644
--- a/qemu-coroutine-lock.c
+++ b/qemu-coroutine-lock.c
@@ -44,6 +44,12 @@ static void qemu_co_process_runnable(void *opaque)
}
}
+static void qemu_co_runnable_schedule(Coroutine *co)
+{
+ QTAILQ_INSERT_TAIL(&co_runnable_queue, co, co_queue_next);
+ qemu_bh_schedule(co_runnable_bh);
+}
+
static void __attribute__((constructor)) co_runnable_bh_init(void)
{
co_runnable_bh = qemu_bh_new(qemu_co_process_runnable, NULL);
@@ -77,9 +83,8 @@ bool qemu_co_queue_next(CoQueue *queue)
next = QTAILQ_FIRST(&queue->entries);
if (next) {
QTAILQ_REMOVE(&queue->entries, next, co_queue_next);
- QTAILQ_INSERT_TAIL(&co_runnable_queue, next, co_queue_next);
trace_qemu_co_queue_next(next);
- qemu_bh_schedule(co_runnable_bh);
+ qemu_co_runnable_schedule(next);
}
return (next != NULL);
--
1.7.4.4
- [Qemu-devel] [PATCH 01/10] coroutine: use qemu_coroutine_switch() directly, Lai Jiangshan, 2012/04/03
- [Qemu-devel] [PATCH 06/10] coroutine: move runnale coroutine code to qemu-coroutine.c, Lai Jiangshan, 2012/04/03
- [Qemu-devel] [PATCH 09/10] coroutine: schedule timeout coroutine instead process it directly, Lai Jiangshan, 2012/04/03
- [Qemu-devel] [PATCH 05/10] coroutine: add qemu_co_runnable_schedule(),
Lai Jiangshan <=
- [Qemu-devel] [PATCH 02/10] coroutine: rename unlock_bh_queue to co_runnable_queue, Lai Jiangshan, 2012/04/03
- [Qemu-devel] [PATCH 04/10] coroutine: init co_runnable_bh during boot, Lai Jiangshan, 2012/04/03
- [Qemu-devel] [PATCH 03/10] coroutine: rename qemu_co_queue_next_bh() to qemu_co_process_runnable(), Lai Jiangshan, 2012/04/03
- [Qemu-devel] [PATCH 10/10] coroutine: add qemu_coroutine_run() wrapper, Lai Jiangshan, 2012/04/03