diff options
author | Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru> | 2015-09-17 19:24:33 +0300 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2015-11-06 10:16:02 +0100 |
commit | b60c48a7019614902f2debe4d4181ec8cfa60e0d (patch) | |
tree | 954f4fdccaa789c4ada10e6746e279b2b4467d59 /replay | |
parent | 8eda206e09089914006bfbdd71467d5246c06e4a (diff) |
replay: shutdown event
This patch records and replays simulator shutdown event.
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>
Message-Id: <20150917162433.8676.32262.stgit@PASHA-ISP.def.inno>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru>
Diffstat (limited to 'replay')
-rw-r--r-- | replay/replay-internal.h | 2 | ||||
-rw-r--r-- | replay/replay.c | 14 |
2 files changed, 16 insertions, 0 deletions
diff --git a/replay/replay-internal.h b/replay/replay-internal.h index f042c46e70..4414695017 100644 --- a/replay/replay-internal.h +++ b/replay/replay-internal.h @@ -23,6 +23,8 @@ enum ReplayEvents { EVENT_EXCEPTION, /* for async events */ EVENT_ASYNC, + /* for shutdown request */ + EVENT_SHUTDOWN, /* for clock read/writes */ /* some of greater codes are reserved for clocks */ EVENT_CLOCK, diff --git a/replay/replay.c b/replay/replay.c index b4fc64acee..65dca7f534 100644 --- a/replay/replay.c +++ b/replay/replay.c @@ -14,6 +14,7 @@ #include "replay-internal.h" #include "qemu/timer.h" #include "qemu/main-loop.h" +#include "sysemu/sysemu.h" ReplayMode replay_mode = REPLAY_MODE_NONE; @@ -34,6 +35,10 @@ bool replay_next_event_is(int event) res = true; } switch (replay_data_kind) { + case EVENT_SHUTDOWN: + replay_finish_event(); + qemu_system_shutdown_request(); + break; default: /* clock, time_t, checkpoint and other events */ return res; @@ -146,3 +151,12 @@ bool replay_has_interrupt(void) } return res; } + +void replay_shutdown_request(void) +{ + if (replay_mode == REPLAY_MODE_RECORD) { + replay_mutex_lock(); + replay_put_event(EVENT_SHUTDOWN); + replay_mutex_unlock(); + } +} |