[Qemu-devel] [PATCH 09/10] coroutine: schedule timeout coroutine instead process it directly

2012-04-03 Thread Lai Jiangshan
Avoid a timer callback spends too much time.

Signed-off-by: Lai Jiangshan la...@cn.fujitsu.com
---
 qemu-coroutine-sleep.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/qemu-coroutine-sleep.c b/qemu-coroutine-sleep.c
index fd65274..df9254a 100644
--- a/qemu-coroutine-sleep.c
+++ b/qemu-coroutine-sleep.c
@@ -24,7 +24,7 @@ static void co_sleep_cb(void *opaque)
 CoSleepCB *sleep_cb = opaque;
 
 qemu_free_timer(sleep_cb-ts);
-qemu_coroutine_enter(sleep_cb-co, NULL);
+qemu_co_runnable_schedule(sleep_cb-co);
 }
 
 void coroutine_fn co_sleep_ns(QEMUClock *clock, int64_t ns)
-- 
1.7.4.4




Re: [Qemu-devel] [PATCH 09/10] coroutine: schedule timeout coroutine instead process it directly

2012-04-03 Thread Paolo Bonzini
Il 03/04/2012 10:38, Lai Jiangshan ha scritto:
 Avoid a timer callback spends too much time.
 
 Signed-off-by: Lai Jiangshan la...@cn.fujitsu.com
 ---
  qemu-coroutine-sleep.c |2 +-
  1 files changed, 1 insertions(+), 1 deletions(-)
 
 diff --git a/qemu-coroutine-sleep.c b/qemu-coroutine-sleep.c
 index fd65274..df9254a 100644
 --- a/qemu-coroutine-sleep.c
 +++ b/qemu-coroutine-sleep.c
 @@ -24,7 +24,7 @@ static void co_sleep_cb(void *opaque)
  CoSleepCB *sleep_cb = opaque;
  
  qemu_free_timer(sleep_cb-ts);
 -qemu_coroutine_enter(sleep_cb-co, NULL);
 +qemu_co_runnable_schedule(sleep_cb-co);
  }
  
  void coroutine_fn co_sleep_ns(QEMUClock *clock, int64_t ns)

Why is this important?

Also, why should it be different for timers, fd_handlers (used for
example by NBD) and bottom halves (used for AIO callbacks)?

Paolo