From patchwork Mon Feb 21 08:43:21 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [02/21] implement win32 dynticks timer Date: Sun, 20 Feb 2011 22:43:21 -0000 From: Paolo Bonzini X-Patchwork-Id: 83785 Message-Id: <1298277820-8817-3-git-send-email-pbonzini@redhat.com> To: qemu-devel@nongnu.org Signed-off-by: Paolo Bonzini --- qemu-timer.c | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) diff --git a/qemu-timer.c b/qemu-timer.c index b0db780..e6b926b 100644 --- a/qemu-timer.c +++ b/qemu-timer.c @@ -1006,6 +1006,7 @@ static void win32_stop_timer(struct qemu_alarm_timer *t) static void win32_rearm_timer(struct qemu_alarm_timer *t) { struct qemu_alarm_win32 *data = t->priv; + int nearest_delta_ms; assert(alarm_has_dynticks(t)); if (!active_timers[QEMU_CLOCK_REALTIME] && @@ -1015,7 +1016,11 @@ static void win32_rearm_timer(struct qemu_alarm_timer *t) timeKillEvent(data->timerId); - data->timerId = timeSetEvent(1, + nearest_delta_ms = (qemu_next_alarm_deadline() + 999999) / 1000000; + if (nearest_delta_ms < 1) { + nearest_delta_ms = 1; + } + data->timerId = timeSetEvent(nearest_delta_ms, data->period, host_alarm_handler, (DWORD)t,