[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH v9 13/23] replay: shutdown event
From: |
Pavel Dovgalyuk |
Subject: |
[Qemu-devel] [RFC PATCH v9 13/23] replay: shutdown event |
Date: |
Wed, 18 Feb 2015 14:56:58 +0300 |
User-agent: |
StGit/0.16 |
This patch records and replays simulator shutdown event.
Reviewed-by: Paolo Bonzini <address@hidden>
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 1a88fda..27a3b0a 100755
--- 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 grteater codes are reserved for clocks */
EVENT_CLOCK,
diff --git a/replay/replay.c b/replay/replay.c
index 54a4fb8..3330432 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;
@@ -149,3 +154,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 2398509..fcc93d1 100755
--- a/replay/replay.h
+++ b/replay/replay.h
@@ -66,6 +66,11 @@ int64_t replay_read_clock(ReplayClockKind kind);
? replay_save_clock((clock), (value)) \
: (value))
+/* 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 00161f4..58b9dd5 100644
--- a/vl.c
+++ b/vl.c
@@ -1710,6 +1710,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();
}
- Re: [Qemu-devel] [RFC PATCH v9 08/23] cpu: replay instructions sequence, (continued)
- [Qemu-devel] [RFC PATCH v9 09/23] replay: interrupts and exceptions, Pavel Dovgalyuk, 2015/02/18
- [Qemu-devel] [RFC PATCH v9 10/23] replay: asynchronous events infrastructure, Pavel Dovgalyuk, 2015/02/18
- [Qemu-devel] [RFC PATCH v9 11/23] replay: recording and replaying clock ticks, Pavel Dovgalyuk, 2015/02/18
- [Qemu-devel] [RFC PATCH v9 12/23] timer: replace time() with QEMU_CLOCK_HOST, Pavel Dovgalyuk, 2015/02/18
- [Qemu-devel] [RFC PATCH v9 13/23] replay: shutdown event,
Pavel Dovgalyuk <=
- [Qemu-devel] [RFC PATCH v9 14/23] replay: checkpoints, Pavel Dovgalyuk, 2015/02/18
- [Qemu-devel] [RFC PATCH v9 15/23] aio: replace stack of bottom halves with queue, Pavel Dovgalyuk, 2015/02/18
- [Qemu-devel] [RFC PATCH v9 16/23] replay: bottom halves, Pavel Dovgalyuk, 2015/02/18
- [Qemu-devel] [RFC PATCH v9 17/23] replay: replay aio requests, Pavel Dovgalyuk, 2015/02/18
- [Qemu-devel] [RFC PATCH v9 18/23] replay: thread pool, Pavel Dovgalyuk, 2015/02/18
- [Qemu-devel] [RFC PATCH v9 19/23] typedef: add typedef for QemuOpts, Pavel Dovgalyuk, 2015/02/18