diff mbox

[4/5] qemu-timer: Remove function alarm_has_dynticks

Message ID 1334916186-27963-5-git-send-email-sw@weilnetz.de
State Superseded
Headers show

Commit Message

Stefan Weil April 20, 2012, 10:03 a.m. UTC
Some time ago, the last time which did not have dynticks was removed,
so now all timers have dynticks.

I also removed a misleading error message for the dynticks timer.
If timer_create fails, there is already an error message, and
QEMU will use the unix timer which also provides dynamic ticks,
therefore dynamic ticks are not disabled.

Signed-off-by: Stefan Weil <sw@weilnetz.de>
---
 qemu-timer.c |   31 ++++++-------------------------
 1 files changed, 6 insertions(+), 25 deletions(-)

Comments

Paolo Bonzini April 20, 2012, 10:13 a.m. UTC | #1
Il 20/04/2012 12:03, Stefan Weil ha scritto:
> Some time ago, the last time which did not have dynticks was removed,
> so now all timers have dynticks.
> 
> I also removed a misleading error message for the dynticks timer.
> If timer_create fails, there is already an error message, and
> QEMU will use the unix timer which also provides dynamic ticks,
> therefore dynamic ticks are not disabled.
> 
> Signed-off-by: Stefan Weil <sw@weilnetz.de>
> ---
>  qemu-timer.c |   31 ++++++-------------------------
>  1 files changed, 6 insertions(+), 25 deletions(-)
> 
> diff --git a/qemu-timer.c b/qemu-timer.c
> index 73ffe25..1fbc2df 100644
> --- a/qemu-timer.c
> +++ b/qemu-timer.c
> @@ -87,11 +87,6 @@ static bool qemu_timer_expired_ns(QEMUTimer *timer_head, int64_t current_time)
>      return timer_head && (timer_head->expire_time <= current_time);
>  }
>  
> -static inline int alarm_has_dynticks(struct qemu_alarm_timer *t)
> -{
> -    return !!t->rearm;
> -}
> -
>  static int64_t qemu_next_alarm_deadline(void)
>  {
>      int64_t delta;
> @@ -124,7 +119,6 @@ static int64_t qemu_next_alarm_deadline(void)
>  static void qemu_rearm_alarm_timer(struct qemu_alarm_timer *t)
>  {
>      int64_t nearest_delta_ns;
> -    assert(alarm_has_dynticks(t));
>      if (!rt_clock->active_timers &&
>          !vm_clock->active_timers &&
>          !host_clock->active_timers) {
> @@ -483,9 +477,8 @@ static void host_alarm_handler(int host_signum)
>      if (!t)
>  	return;
>  
> -    if (alarm_has_dynticks(t) ||
> -        qemu_next_alarm_deadline () <= 0) {
> -        t->expired = alarm_has_dynticks(t);
> +    if (qemu_next_alarm_deadline() <= 0) {

This is actually if (true).

> +        t->expired = true;
>          t->pending = true;
>          qemu_notify_event();
>      }
> @@ -524,10 +517,6 @@ static int dynticks_start_timer(struct qemu_alarm_timer *t)
>  
>      if (timer_create(CLOCK_REALTIME, &ev, &host_timer)) {
>          perror("timer_create");
> -
> -        /* disable dynticks */
> -        fprintf(stderr, "Dynamic Ticks disabled\n");
> -
>          return -1;
>      }
>  
> @@ -636,8 +625,8 @@ static void CALLBACK mm_alarm_handler(UINT uTimerID, UINT uMsg,
>      if (!t) {
>          return;
>      }
> -    if (alarm_has_dynticks(t) || qemu_next_alarm_deadline() <= 0) {
> -        t->expired = alarm_has_dynticks(t);
> +    if (qemu_next_alarm_deadline() <= 0) {
> +        t->expired = true;
>          t->pending = true;
>          qemu_notify_event();
>      }

This too.

Otherwise the series look good, thanks!

Paolo

> @@ -646,7 +635,6 @@ static void CALLBACK mm_alarm_handler(UINT uTimerID, UINT uMsg,
>  static int mm_start_timer(struct qemu_alarm_timer *t)
>  {
>      TIMECAPS tc;
> -    UINT flags;
>  
>      memset(&tc, 0, sizeof(tc));
>      timeGetDevCaps(&tc, sizeof(tc));
> @@ -654,18 +642,11 @@ static int mm_start_timer(struct qemu_alarm_timer *t)
>      mm_period = tc.wPeriodMin;
>      timeBeginPeriod(mm_period);
>  
> -    flags = TIME_CALLBACK_FUNCTION;
> -    if (alarm_has_dynticks(t)) {
> -        flags |= TIME_ONESHOT;
> -    } else {
> -        flags |= TIME_PERIODIC;
> -    }
> -
>      mm_timer = timeSetEvent(1,                  /* interval (ms) */
>                              mm_period,          /* resolution */
>                              mm_alarm_handler,   /* function */
>                              (DWORD_PTR)t,       /* parameter */
> -                            flags);
> +                            TIME_ONESHOT | TIME_CALLBACK_FUNCTION);
>  
>      if (!mm_timer) {
>          fprintf(stderr, "Failed to initialize win32 alarm timer: %ld\n",
> @@ -720,7 +701,7 @@ static int win32_start_timer(struct qemu_alarm_timer *t)
>                            host_alarm_handler,
>                            t,
>                            1,
> -                          alarm_has_dynticks(t) ? 3600000 : 1,
> +                          3600000,
>                            WT_EXECUTEINTIMERTHREAD);
>  
>      if (!success) {
diff mbox

Patch

diff --git a/qemu-timer.c b/qemu-timer.c
index 73ffe25..1fbc2df 100644
--- a/qemu-timer.c
+++ b/qemu-timer.c
@@ -87,11 +87,6 @@  static bool qemu_timer_expired_ns(QEMUTimer *timer_head, int64_t current_time)
     return timer_head && (timer_head->expire_time <= current_time);
 }
 
-static inline int alarm_has_dynticks(struct qemu_alarm_timer *t)
-{
-    return !!t->rearm;
-}
-
 static int64_t qemu_next_alarm_deadline(void)
 {
     int64_t delta;
@@ -124,7 +119,6 @@  static int64_t qemu_next_alarm_deadline(void)
 static void qemu_rearm_alarm_timer(struct qemu_alarm_timer *t)
 {
     int64_t nearest_delta_ns;
-    assert(alarm_has_dynticks(t));
     if (!rt_clock->active_timers &&
         !vm_clock->active_timers &&
         !host_clock->active_timers) {
@@ -483,9 +477,8 @@  static void host_alarm_handler(int host_signum)
     if (!t)
 	return;
 
-    if (alarm_has_dynticks(t) ||
-        qemu_next_alarm_deadline () <= 0) {
-        t->expired = alarm_has_dynticks(t);
+    if (qemu_next_alarm_deadline() <= 0) {
+        t->expired = true;
         t->pending = true;
         qemu_notify_event();
     }
@@ -524,10 +517,6 @@  static int dynticks_start_timer(struct qemu_alarm_timer *t)
 
     if (timer_create(CLOCK_REALTIME, &ev, &host_timer)) {
         perror("timer_create");
-
-        /* disable dynticks */
-        fprintf(stderr, "Dynamic Ticks disabled\n");
-
         return -1;
     }
 
@@ -636,8 +625,8 @@  static void CALLBACK mm_alarm_handler(UINT uTimerID, UINT uMsg,
     if (!t) {
         return;
     }
-    if (alarm_has_dynticks(t) || qemu_next_alarm_deadline() <= 0) {
-        t->expired = alarm_has_dynticks(t);
+    if (qemu_next_alarm_deadline() <= 0) {
+        t->expired = true;
         t->pending = true;
         qemu_notify_event();
     }
@@ -646,7 +635,6 @@  static void CALLBACK mm_alarm_handler(UINT uTimerID, UINT uMsg,
 static int mm_start_timer(struct qemu_alarm_timer *t)
 {
     TIMECAPS tc;
-    UINT flags;
 
     memset(&tc, 0, sizeof(tc));
     timeGetDevCaps(&tc, sizeof(tc));
@@ -654,18 +642,11 @@  static int mm_start_timer(struct qemu_alarm_timer *t)
     mm_period = tc.wPeriodMin;
     timeBeginPeriod(mm_period);
 
-    flags = TIME_CALLBACK_FUNCTION;
-    if (alarm_has_dynticks(t)) {
-        flags |= TIME_ONESHOT;
-    } else {
-        flags |= TIME_PERIODIC;
-    }
-
     mm_timer = timeSetEvent(1,                  /* interval (ms) */
                             mm_period,          /* resolution */
                             mm_alarm_handler,   /* function */
                             (DWORD_PTR)t,       /* parameter */
-                            flags);
+                            TIME_ONESHOT | TIME_CALLBACK_FUNCTION);
 
     if (!mm_timer) {
         fprintf(stderr, "Failed to initialize win32 alarm timer: %ld\n",
@@ -720,7 +701,7 @@  static int win32_start_timer(struct qemu_alarm_timer *t)
                           host_alarm_handler,
                           t,
                           1,
-                          alarm_has_dynticks(t) ? 3600000 : 1,
+                          3600000,
                           WT_EXECUTEINTIMERTHREAD);
 
     if (!success) {