aboutsummaryrefslogtreecommitdiff
path: root/vl.c
diff options
context:
space:
mode:
authoraliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162>2008-11-05 21:04:35 +0000
committeraliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162>2008-11-05 21:04:35 +0000
commit5bec1d1deac8826de21081a4157e14fa48b12805 (patch)
treeba72a5cfc835eb3c8dd61a9e3d0ad6ad17bdcd28 /vl.c
parent6abfbd79b242b9365dce3e3294289317c1a62c3b (diff)
downloadqemu-5bec1d1deac8826de21081a4157e14fa48b12805.zip
qemu-5bec1d1deac8826de21081a4157e14fa48b12805.tar.gz
qemu-5bec1d1deac8826de21081a4157e14fa48b12805.tar.bz2
Run timers from host alarm timer callback
This further cleans up the main loop getting it a lot closer to what a main loop should be. Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5636 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'vl.c')
-rw-r--r--vl.c19
1 files changed, 9 insertions, 10 deletions
diff --git a/vl.c b/vl.c
index 6fda9d0..2691500 100644
--- a/vl.c
+++ b/vl.c
@@ -1700,6 +1700,15 @@ static void try_to_rearm_timer(void *opaque)
len = read(alarm_timer_rfd, buffer, sizeof(buffer));
} while ((len == -1 && errno == EINTR) || len > 0);
+ /* vm time timers */
+ if (vm_running && likely(!(cur_cpu->singlestep_enabled & SSTEP_NOTIMER)))
+ qemu_run_timers(&active_timers[QEMU_TIMER_VIRTUAL],
+ qemu_get_clock(vm_clock));
+
+ /* real time timers */
+ qemu_run_timers(&active_timers[QEMU_TIMER_REALTIME],
+ qemu_get_clock(rt_clock));
+
if (t->flags & ALARM_FLAG_EXPIRED) {
alarm_timer->flags &= ~ALARM_FLAG_EXPIRED;
qemu_rearm_alarm_timer(alarm_timer);
@@ -4551,16 +4560,6 @@ void main_loop_wait(int timeout)
}
#endif
- if (vm_running) {
- if (likely(!(cur_cpu->singlestep_enabled & SSTEP_NOTIMER)))
- qemu_run_timers(&active_timers[QEMU_TIMER_VIRTUAL],
- qemu_get_clock(vm_clock));
- }
-
- /* real time timers */
- qemu_run_timers(&active_timers[QEMU_TIMER_REALTIME],
- qemu_get_clock(rt_clock));
-
/* Check bottom-halves last in case any of the earlier events triggered
them. */
qemu_bh_poll();