diff mbox series

[for,4.2,3/3] timer: last, remove last bits of last

Message ID 20190722150717.10564-4-dgilbert@redhat.com
State New
Headers show
Series Remove time reset notifications | expand

Commit Message

Dr. David Alan Gilbert July 22, 2019, 3:07 p.m. UTC
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>

The reset notifiers kept a 'last' counter to notice jumps;
now that we've remove the notifier we don't need to keep 'last'.
replay used to save/restore 'last' (presumably to avoid triggering
the notifier);  make it store the current time instead which avoids
changing it's migration format.

Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
---
 include/qemu/timer.h     | 13 -------------
 replay/replay-snapshot.c |  3 +--
 util/qemu-timer.c        | 22 +---------------------
 3 files changed, 2 insertions(+), 36 deletions(-)

Comments

Pavel Dovgalyuk July 23, 2019, 5:54 a.m. UTC | #1
Hello!

> From: Dr. David Alan Gilbert (git) [mailto:dgilbert@redhat.com]
> The reset notifiers kept a 'last' counter to notice jumps;
> now that we've remove the notifier we don't need to keep 'last'.
> replay used to save/restore 'last' (presumably to avoid triggering
> the notifier);  make it store the current time instead which avoids
> changing it's migration format.

If you are removing 'last' field, you also should drop 'host_clock_last'
from ReplayState, because it is used only for restoring host clock
'last' field. And that was useful only in record/replay mode.

> 
> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> ---
>  include/qemu/timer.h     | 13 -------------
>  replay/replay-snapshot.c |  3 +--
>  util/qemu-timer.c        | 22 +---------------------
>  3 files changed, 2 insertions(+), 36 deletions(-)
> 
> diff --git a/include/qemu/timer.h b/include/qemu/timer.h
> index 6817c78ef4..5bcab935f6 100644
> --- a/include/qemu/timer.h
> +++ b/include/qemu/timer.h
> @@ -248,19 +248,6 @@ bool qemu_clock_run_timers(QEMUClockType type);
>   */
>  bool qemu_clock_run_all_timers(void);
> 
> -/**
> - * qemu_clock_get_last:
> - *
> - * Returns last clock query time.
> - */
> -uint64_t qemu_clock_get_last(QEMUClockType type);
> -/**
> - * qemu_clock_set_last:
> - *
> - * Sets last clock query time.
> - */
> -void qemu_clock_set_last(QEMUClockType type, uint64_t last);
> -
> 
>  /*
>   * QEMUTimerList
> diff --git a/replay/replay-snapshot.c b/replay/replay-snapshot.c
> index 756f48bc02..ca6d4adcc0 100644
> --- a/replay/replay-snapshot.c
> +++ b/replay/replay-snapshot.c
> @@ -24,7 +24,7 @@ static int replay_pre_save(void *opaque)
>  {
>      ReplayState *state = opaque;
>      state->file_offset = ftell(replay_file);
> -    state->host_clock_last = qemu_clock_get_last(QEMU_CLOCK_HOST);
> +    state->host_clock_last = get_clock_realtime();
> 
>      return 0;
>  }
> @@ -34,7 +34,6 @@ static int replay_post_load(void *opaque, int version_id)
>      ReplayState *state = opaque;
>      if (replay_mode == REPLAY_MODE_PLAY) {
>          fseek(replay_file, state->file_offset, SEEK_SET);
> -        qemu_clock_set_last(QEMU_CLOCK_HOST, state->host_clock_last);
>          /* If this was a vmstate, saved in recording mode,
>             we need to initialize replay data fields. */
>          replay_fetch_data_kind();
> diff --git a/util/qemu-timer.c b/util/qemu-timer.c
> index 2faaaf9926..b73041df4e 100644
> --- a/util/qemu-timer.c
> +++ b/util/qemu-timer.c
> @@ -48,8 +48,6 @@ typedef struct QEMUClock {
>      /* We rely on BQL to protect the timerlists */
>      QLIST_HEAD(, QEMUTimerList) timerlists;
> 
> -    int64_t last;
> -
>      QEMUClockType type;
>      bool enabled;
>  } QEMUClock;
> @@ -130,7 +128,6 @@ static void qemu_clock_init(QEMUClockType type, QEMUTimerListNotifyCB
> *notify_cb
> 
>      clock->type = type;
>      clock->enabled = (type == QEMU_CLOCK_VIRTUAL ? false : true);
> -    clock->last = INT64_MIN;
>      QLIST_INIT(&clock->timerlists);
>      main_loop_tlg.tl[type] = timerlist_new(type, notify_cb, NULL);
>  }
> @@ -628,9 +625,6 @@ int64_t timerlistgroup_deadline_ns(QEMUTimerListGroup *tlg)
> 
>  int64_t qemu_clock_get_ns(QEMUClockType type)
>  {
> -    int64_t now;
> -    QEMUClock *clock = qemu_clock_ptr(type);
> -
>      switch (type) {
>      case QEMU_CLOCK_REALTIME:
>          return get_clock();
> @@ -642,26 +636,12 @@ int64_t qemu_clock_get_ns(QEMUClockType type)
>              return cpu_get_clock();
>          }
>      case QEMU_CLOCK_HOST:
> -        now = REPLAY_CLOCK(REPLAY_CLOCK_HOST, get_clock_realtime());
> -        clock->last = now;
> -        return now;
> +        return REPLAY_CLOCK(REPLAY_CLOCK_HOST, get_clock_realtime());
>      case QEMU_CLOCK_VIRTUAL_RT:
>          return REPLAY_CLOCK(REPLAY_CLOCK_VIRTUAL_RT, cpu_get_clock());
>      }
>  }
> 
> -uint64_t qemu_clock_get_last(QEMUClockType type)
> -{
> -    QEMUClock *clock = qemu_clock_ptr(type);
> -    return clock->last;
> -}
> -
> -void qemu_clock_set_last(QEMUClockType type, uint64_t last)
> -{
> -    QEMUClock *clock = qemu_clock_ptr(type);
> -    clock->last = last;
> -}
> -
>  void init_clocks(QEMUTimerListNotifyCB *notify_cb)
>  {
>      QEMUClockType type;
> --
> 2.21.0


Pavel Dovgalyuk
Dr. David Alan Gilbert July 24, 2019, 11:20 a.m. UTC | #2
* Pavel Dovgalyuk (dovgaluk@ispras.ru) wrote:
> Hello!
> 
> > From: Dr. David Alan Gilbert (git) [mailto:dgilbert@redhat.com]
> > The reset notifiers kept a 'last' counter to notice jumps;
> > now that we've remove the notifier we don't need to keep 'last'.
> > replay used to save/restore 'last' (presumably to avoid triggering
> > the notifier);  make it store the current time instead which avoids
> > changing it's migration format.
> 
> If you are removing 'last' field, you also should drop 'host_clock_last'
> from ReplayState, because it is used only for restoring host clock
> 'last' field. And that was useful only in record/replay mode.

OK, I'll cook a v2 that removes it and bumps the version.

Dave

> > 
> > Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> > ---
> >  include/qemu/timer.h     | 13 -------------
> >  replay/replay-snapshot.c |  3 +--
> >  util/qemu-timer.c        | 22 +---------------------
> >  3 files changed, 2 insertions(+), 36 deletions(-)
> > 
> > diff --git a/include/qemu/timer.h b/include/qemu/timer.h
> > index 6817c78ef4..5bcab935f6 100644
> > --- a/include/qemu/timer.h
> > +++ b/include/qemu/timer.h
> > @@ -248,19 +248,6 @@ bool qemu_clock_run_timers(QEMUClockType type);
> >   */
> >  bool qemu_clock_run_all_timers(void);
> > 
> > -/**
> > - * qemu_clock_get_last:
> > - *
> > - * Returns last clock query time.
> > - */
> > -uint64_t qemu_clock_get_last(QEMUClockType type);
> > -/**
> > - * qemu_clock_set_last:
> > - *
> > - * Sets last clock query time.
> > - */
> > -void qemu_clock_set_last(QEMUClockType type, uint64_t last);
> > -
> > 
> >  /*
> >   * QEMUTimerList
> > diff --git a/replay/replay-snapshot.c b/replay/replay-snapshot.c
> > index 756f48bc02..ca6d4adcc0 100644
> > --- a/replay/replay-snapshot.c
> > +++ b/replay/replay-snapshot.c
> > @@ -24,7 +24,7 @@ static int replay_pre_save(void *opaque)
> >  {
> >      ReplayState *state = opaque;
> >      state->file_offset = ftell(replay_file);
> > -    state->host_clock_last = qemu_clock_get_last(QEMU_CLOCK_HOST);
> > +    state->host_clock_last = get_clock_realtime();
> > 
> >      return 0;
> >  }
> > @@ -34,7 +34,6 @@ static int replay_post_load(void *opaque, int version_id)
> >      ReplayState *state = opaque;
> >      if (replay_mode == REPLAY_MODE_PLAY) {
> >          fseek(replay_file, state->file_offset, SEEK_SET);
> > -        qemu_clock_set_last(QEMU_CLOCK_HOST, state->host_clock_last);
> >          /* If this was a vmstate, saved in recording mode,
> >             we need to initialize replay data fields. */
> >          replay_fetch_data_kind();
> > diff --git a/util/qemu-timer.c b/util/qemu-timer.c
> > index 2faaaf9926..b73041df4e 100644
> > --- a/util/qemu-timer.c
> > +++ b/util/qemu-timer.c
> > @@ -48,8 +48,6 @@ typedef struct QEMUClock {
> >      /* We rely on BQL to protect the timerlists */
> >      QLIST_HEAD(, QEMUTimerList) timerlists;
> > 
> > -    int64_t last;
> > -
> >      QEMUClockType type;
> >      bool enabled;
> >  } QEMUClock;
> > @@ -130,7 +128,6 @@ static void qemu_clock_init(QEMUClockType type, QEMUTimerListNotifyCB
> > *notify_cb
> > 
> >      clock->type = type;
> >      clock->enabled = (type == QEMU_CLOCK_VIRTUAL ? false : true);
> > -    clock->last = INT64_MIN;
> >      QLIST_INIT(&clock->timerlists);
> >      main_loop_tlg.tl[type] = timerlist_new(type, notify_cb, NULL);
> >  }
> > @@ -628,9 +625,6 @@ int64_t timerlistgroup_deadline_ns(QEMUTimerListGroup *tlg)
> > 
> >  int64_t qemu_clock_get_ns(QEMUClockType type)
> >  {
> > -    int64_t now;
> > -    QEMUClock *clock = qemu_clock_ptr(type);
> > -
> >      switch (type) {
> >      case QEMU_CLOCK_REALTIME:
> >          return get_clock();
> > @@ -642,26 +636,12 @@ int64_t qemu_clock_get_ns(QEMUClockType type)
> >              return cpu_get_clock();
> >          }
> >      case QEMU_CLOCK_HOST:
> > -        now = REPLAY_CLOCK(REPLAY_CLOCK_HOST, get_clock_realtime());
> > -        clock->last = now;
> > -        return now;
> > +        return REPLAY_CLOCK(REPLAY_CLOCK_HOST, get_clock_realtime());
> >      case QEMU_CLOCK_VIRTUAL_RT:
> >          return REPLAY_CLOCK(REPLAY_CLOCK_VIRTUAL_RT, cpu_get_clock());
> >      }
> >  }
> > 
> > -uint64_t qemu_clock_get_last(QEMUClockType type)
> > -{
> > -    QEMUClock *clock = qemu_clock_ptr(type);
> > -    return clock->last;
> > -}
> > -
> > -void qemu_clock_set_last(QEMUClockType type, uint64_t last)
> > -{
> > -    QEMUClock *clock = qemu_clock_ptr(type);
> > -    clock->last = last;
> > -}
> > -
> >  void init_clocks(QEMUTimerListNotifyCB *notify_cb)
> >  {
> >      QEMUClockType type;
> > --
> > 2.21.0
> 
> 
> Pavel Dovgalyuk
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
diff mbox series

Patch

diff --git a/include/qemu/timer.h b/include/qemu/timer.h
index 6817c78ef4..5bcab935f6 100644
--- a/include/qemu/timer.h
+++ b/include/qemu/timer.h
@@ -248,19 +248,6 @@  bool qemu_clock_run_timers(QEMUClockType type);
  */
 bool qemu_clock_run_all_timers(void);
 
-/**
- * qemu_clock_get_last:
- *
- * Returns last clock query time.
- */
-uint64_t qemu_clock_get_last(QEMUClockType type);
-/**
- * qemu_clock_set_last:
- *
- * Sets last clock query time.
- */
-void qemu_clock_set_last(QEMUClockType type, uint64_t last);
-
 
 /*
  * QEMUTimerList
diff --git a/replay/replay-snapshot.c b/replay/replay-snapshot.c
index 756f48bc02..ca6d4adcc0 100644
--- a/replay/replay-snapshot.c
+++ b/replay/replay-snapshot.c
@@ -24,7 +24,7 @@  static int replay_pre_save(void *opaque)
 {
     ReplayState *state = opaque;
     state->file_offset = ftell(replay_file);
-    state->host_clock_last = qemu_clock_get_last(QEMU_CLOCK_HOST);
+    state->host_clock_last = get_clock_realtime();
 
     return 0;
 }
@@ -34,7 +34,6 @@  static int replay_post_load(void *opaque, int version_id)
     ReplayState *state = opaque;
     if (replay_mode == REPLAY_MODE_PLAY) {
         fseek(replay_file, state->file_offset, SEEK_SET);
-        qemu_clock_set_last(QEMU_CLOCK_HOST, state->host_clock_last);
         /* If this was a vmstate, saved in recording mode,
            we need to initialize replay data fields. */
         replay_fetch_data_kind();
diff --git a/util/qemu-timer.c b/util/qemu-timer.c
index 2faaaf9926..b73041df4e 100644
--- a/util/qemu-timer.c
+++ b/util/qemu-timer.c
@@ -48,8 +48,6 @@  typedef struct QEMUClock {
     /* We rely on BQL to protect the timerlists */
     QLIST_HEAD(, QEMUTimerList) timerlists;
 
-    int64_t last;
-
     QEMUClockType type;
     bool enabled;
 } QEMUClock;
@@ -130,7 +128,6 @@  static void qemu_clock_init(QEMUClockType type, QEMUTimerListNotifyCB *notify_cb
 
     clock->type = type;
     clock->enabled = (type == QEMU_CLOCK_VIRTUAL ? false : true);
-    clock->last = INT64_MIN;
     QLIST_INIT(&clock->timerlists);
     main_loop_tlg.tl[type] = timerlist_new(type, notify_cb, NULL);
 }
@@ -628,9 +625,6 @@  int64_t timerlistgroup_deadline_ns(QEMUTimerListGroup *tlg)
 
 int64_t qemu_clock_get_ns(QEMUClockType type)
 {
-    int64_t now;
-    QEMUClock *clock = qemu_clock_ptr(type);
-
     switch (type) {
     case QEMU_CLOCK_REALTIME:
         return get_clock();
@@ -642,26 +636,12 @@  int64_t qemu_clock_get_ns(QEMUClockType type)
             return cpu_get_clock();
         }
     case QEMU_CLOCK_HOST:
-        now = REPLAY_CLOCK(REPLAY_CLOCK_HOST, get_clock_realtime());
-        clock->last = now;
-        return now;
+        return REPLAY_CLOCK(REPLAY_CLOCK_HOST, get_clock_realtime());
     case QEMU_CLOCK_VIRTUAL_RT:
         return REPLAY_CLOCK(REPLAY_CLOCK_VIRTUAL_RT, cpu_get_clock());
     }
 }
 
-uint64_t qemu_clock_get_last(QEMUClockType type)
-{
-    QEMUClock *clock = qemu_clock_ptr(type);
-    return clock->last;
-}
-
-void qemu_clock_set_last(QEMUClockType type, uint64_t last)
-{
-    QEMUClock *clock = qemu_clock_ptr(type);
-    clock->last = last;
-}
-
 void init_clocks(QEMUTimerListNotifyCB *notify_cb)
 {
     QEMUClockType type;