aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2010-03-10 11:38:45 +0100
committerAnthony Liguori <aliguori@us.ibm.com>2010-03-17 11:14:53 -0500
commitb6964827541afbf9c3aa246737ae3d17aaf19869 (patch)
treede5c04be37cc7684255d7485f1664d387da57074
parent3a720b14b9e09f8553832b835ede9933b70fe9a9 (diff)
extract timer handling out of main_loop_wait
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
-rw-r--r--vl.c47
1 files changed, 25 insertions, 22 deletions
diff --git a/vl.c b/vl.c
index 788b334408..5d1a3910a2 100644
--- a/vl.c
+++ b/vl.c
@@ -1002,7 +1002,30 @@ static const VMStateDescription vmstate_timers = {
}
};
-static void qemu_event_increment(void);
+static void qemu_run_all_timers(void)
+{
+ /* rearm timer, if not periodic */
+ if (alarm_timer->expired) {
+ alarm_timer->expired = 0;
+ qemu_rearm_alarm_timer(alarm_timer);
+ }
+
+ alarm_timer->pending = 0;
+
+ /* vm time timers */
+ if (vm_running) {
+ if (!cur_cpu || likely(!(cur_cpu->singlestep_enabled & SSTEP_NOTIMER)))
+ qemu_run_timers(&active_timers[QEMU_CLOCK_VIRTUAL],
+ qemu_get_clock(vm_clock));
+ }
+
+ /* real time timers */
+ qemu_run_timers(&active_timers[QEMU_CLOCK_REALTIME],
+ qemu_get_clock(rt_clock));
+
+ qemu_run_timers(&active_timers[QEMU_CLOCK_HOST],
+ qemu_get_clock(host_clock));
+}
#ifdef _WIN32
static void CALLBACK host_alarm_handler(UINT uTimerID, UINT uMsg,
@@ -3891,27 +3914,7 @@ void main_loop_wait(int timeout)
slirp_select_poll(&rfds, &wfds, &xfds, (ret < 0));
- /* rearm timer, if not periodic */
- if (alarm_timer->expired) {
- alarm_timer->expired = 0;
- qemu_rearm_alarm_timer(alarm_timer);
- }
-
- alarm_timer->pending = 0;
-
- /* vm time timers */
- if (vm_running) {
- if (!cur_cpu || likely(!(cur_cpu->singlestep_enabled & SSTEP_NOTIMER)))
- qemu_run_timers(&active_timers[QEMU_CLOCK_VIRTUAL],
- qemu_get_clock(vm_clock));
- }
-
- /* real time timers */
- qemu_run_timers(&active_timers[QEMU_CLOCK_REALTIME],
- qemu_get_clock(rt_clock));
-
- qemu_run_timers(&active_timers[QEMU_CLOCK_HOST],
- qemu_get_clock(host_clock));
+ qemu_run_all_timers();
/* Check bottom-halves last in case any of the earlier events triggered
them. */