Make the timer subsystem register its own callback instead. Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> --- vl.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/vl.c b/vl.c index c32dc5d..78807f5 100644 --- a/vl.c +++ b/vl.c @@ -1421,6 +1421,12 @@ static void win32_rearm_timer(struct qemu_alarm_timer *t) #endif /* _WIN32 */ +static void alarm_timer_on_change_state_rearm(void *opaque, int running, int reason) +{ + if (running) + qemu_rearm_alarm_timer((struct qemu_alarm_timer *) opaque); +} + static int init_timer_alarm(void) { struct qemu_alarm_timer *t = NULL; @@ -1442,6 +1448,7 @@ static int init_timer_alarm(void) /* first event is at time 0 */ t->pending = 1; alarm_timer = t; + qemu_add_vm_change_state_handler(alarm_timer_on_change_state_rearm, t); return 0; @@ -3094,7 +3101,6 @@ void vm_start(void) cpu_enable_ticks(); vm_running = 1; vm_state_notify(1, 0); - qemu_rearm_alarm_timer(alarm_timer); resume_all_vcpus(); } } -- 1.6.5.2