qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [RFC PATCH v8 13/21] replay: shutdown event


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [RFC PATCH v8 13/21] replay: shutdown event
Date: Thu, 29 Jan 2015 11:20:55 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0


On 22/01/2015 09:52, Pavel Dovgalyuk wrote:
> This patch records and replays simulator shutdown event.
> 
> Signed-off-by: Pavel Dovgalyuk <address@hidden>
> ---
>  replay/replay-internal.h |    2 ++
>  replay/replay.c          |   12 ++++++++++++
>  replay/replay.h          |    5 +++++
>  vl.c                     |    1 +
>  4 files changed, 20 insertions(+), 0 deletions(-)
> 
> diff --git a/replay/replay-internal.h b/replay/replay-internal.h
> index be71e6f..68b2d45 100755
> --- a/replay/replay-internal.h
> +++ b/replay/replay-internal.h
> @@ -27,6 +27,8 @@ enum ReplayEvents {
>      EVENT_TIME_T,
>      /* for tm event */
>      EVENT_TM,
> +    /* for shutdown request */
> +    EVENT_SHUTDOWN,
>      /* for clock read/writes */
>      /* some of grteater codes are reserved for clocks */
>      EVENT_CLOCK
> diff --git a/replay/replay.c b/replay/replay.c
> index 307ac4b..cfa69fa 100755
> --- a/replay/replay.c
> +++ b/replay/replay.c
> @@ -13,6 +13,7 @@
>  #include "replay.h"
>  #include "replay-internal.h"
>  #include "qemu/timer.h"
> +#include "sysemu/sysemu.h"
>  
>  ReplayMode replay_mode = REPLAY_MODE_NONE;
>  
> @@ -34,6 +35,10 @@ bool skip_async_events(int stop_event)
>              res = true;
>          }
>          switch (replay_data_kind) {
> +        case EVENT_SHUTDOWN:
> +            replay_has_unread_data = 0;
> +            qemu_system_shutdown_request();
> +            break;
>          case EVENT_INSTRUCTION:
>              replay_state.instructions_count = replay_get_dword();
>              return res;
> @@ -151,3 +156,10 @@ bool replay_has_interrupt(void)
>      }
>      return res;
>  }
> +
> +void replay_shutdown_request(void)
> +{
> +    if (replay_mode == REPLAY_MODE_RECORD) {
> +        replay_put_event(EVENT_SHUTDOWN);
> +    }
> +}
> diff --git a/replay/replay.h b/replay/replay.h
> index 2f1402c..e1c5fcf 100755
> --- a/replay/replay.h
> +++ b/replay/replay.h
> @@ -76,6 +76,11 @@ time_t replay_time(void);
>      In replay mode it just read from the log. */
>  void replay_get_timedate(struct tm *tm);
>  
> +/* Events */
> +
> +/*! Called when qemu shutdown is requested. */
> +void replay_shutdown_request(void);
> +
>  /* Asynchronous events queue */
>  
>  /*! Disables storing events in the queue */
> diff --git a/vl.c b/vl.c
> index baff3b5..905ea8a 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -1720,6 +1720,7 @@ void qemu_system_killed(int signal, pid_t pid)
>  void qemu_system_shutdown_request(void)
>  {
>      trace_qemu_system_shutdown_request();
> +    replay_shutdown_request();
>      shutdown_requested = 1;
>      qemu_notify_event();
>  }
> 
> 
> 

Reviewed-by: Paolo Bonzini <address@hidden>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]