[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH v11 13/23] replay: shutdown event
From: |
Pavel Dovgalyuk |
Subject: |
[Qemu-devel] [RFC PATCH v11 13/23] replay: shutdown event |
Date: |
Mon, 27 Apr 2015 10:33:27 +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 | 14 ++++++++++++++
replay/replay.h | 5 +++++
vl.c | 1 +
4 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/replay/replay-internal.h b/replay/replay-internal.h
index a79f4af..92d4749 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 c7bd0ec..5c3a8c9 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;
@@ -33,6 +34,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;
@@ -144,3 +149,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();
+ }
+}
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 74c2681..78b1c4a 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();
}
- [Qemu-devel] [RFC PATCH v11 03/23] sysemu: system functions for replay, (continued)
- [Qemu-devel] [RFC PATCH v11 03/23] sysemu: system functions for replay, Pavel Dovgalyuk, 2015/04/27
- [Qemu-devel] [RFC PATCH v11 04/23] replay: internal functions for replay log, Pavel Dovgalyuk, 2015/04/27
- [Qemu-devel] [RFC PATCH v11 05/23] replay: introduce mutex to protect the replay log, Pavel Dovgalyuk, 2015/04/27
- [Qemu-devel] [RFC PATCH v11 06/23] replay: introduce icount event, Pavel Dovgalyuk, 2015/04/27
- [Qemu-devel] [RFC PATCH v11 07/23] cpu-exec: allow temporary disabling icount, Pavel Dovgalyuk, 2015/04/27
- [Qemu-devel] [RFC PATCH v11 08/23] cpu: replay instructions sequence, Pavel Dovgalyuk, 2015/04/27
- [Qemu-devel] [RFC PATCH v11 09/23] i386: interrupt poll processing, Pavel Dovgalyuk, 2015/04/27
- [Qemu-devel] [RFC PATCH v11 10/23] replay: interrupts and exceptions, Pavel Dovgalyuk, 2015/04/27
- [Qemu-devel] [RFC PATCH v11 11/23] replay: asynchronous events infrastructure, Pavel Dovgalyuk, 2015/04/27
- [Qemu-devel] [RFC PATCH v11 12/23] replay: recording and replaying clock ticks, Pavel Dovgalyuk, 2015/04/27
- [Qemu-devel] [RFC PATCH v11 13/23] replay: shutdown event,
Pavel Dovgalyuk <=
- [Qemu-devel] [RFC PATCH v11 14/23] replay: checkpoints, Pavel Dovgalyuk, 2015/04/27
- [Qemu-devel] [RFC PATCH v11 15/23] aio: replace stack of bottom halves with queue, Pavel Dovgalyuk, 2015/04/27
- [Qemu-devel] [RFC PATCH v11 16/23] replay: bottom halves, Pavel Dovgalyuk, 2015/04/27
- [Qemu-devel] [RFC PATCH v11 17/23] replay: replay aio requests, Pavel Dovgalyuk, 2015/04/27
- [Qemu-devel] [RFC PATCH v11 18/23] replay: thread pool, Pavel Dovgalyuk, 2015/04/27
- [Qemu-devel] [RFC PATCH v11 19/23] typedef: add typedef for QemuOpts, Pavel Dovgalyuk, 2015/04/27
- [Qemu-devel] [RFC PATCH v11 20/23] replay: initialization and deinitialization, Pavel Dovgalyuk, 2015/04/27
- [Qemu-devel] [RFC PATCH v11 21/23] replay: replay blockers for devices, Pavel Dovgalyuk, 2015/04/27
- [Qemu-devel] [RFC PATCH v11 22/23] replay: command line options, Pavel Dovgalyuk, 2015/04/27
- [Qemu-devel] [RFC PATCH v11 23/23] replay: recording of the user input, Pavel Dovgalyuk, 2015/04/27