summaryrefslogtreecommitdiffstats
path: root/replay
diff options
context:
space:
mode:
authorPavel Dovgalyuk2020-10-03 19:13:20 +0200
committerPaolo Bonzini2020-10-06 08:34:49 +0200
commite3b09ad2b6e9b23ebc7c2ba133e8a22e53dec301 (patch)
tree94ae7e34cbfceefdc1e9a603872f280bc59ed005 /replay
parentqapi: introduce replay.json for record/replay-related stuff (diff)
downloadqemu-e3b09ad2b6e9b23ebc7c2ba133e8a22e53dec301.tar.gz
qemu-e3b09ad2b6e9b23ebc7c2ba133e8a22e53dec301.tar.xz
qemu-e3b09ad2b6e9b23ebc7c2ba133e8a22e53dec301.zip
replay: introduce info hmp/qmp command
This patch introduces 'info replay' monitor command and corresponding qmp request. These commands request the current record/replay mode, replay log file name, and the instruction count (number of recorded/replayed instructions). The instruction count can be used with the replay_seek/replay_break commands added in the next two patches. Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgalyuk@ispras.ru> Acked-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Acked-by: Markus Armbruster <armbru@redhat.com> Message-Id: <160174520026.12451.13112161947433306561.stgit@pasha-ThinkPad-X280> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'replay')
-rw-r--r--replay/meson.build1
-rw-r--r--replay/replay-debugging.c43
2 files changed, 44 insertions, 0 deletions
diff --git a/replay/meson.build b/replay/meson.build
index 8783aea7c8..f91163fb1e 100644
--- a/replay/meson.build
+++ b/replay/meson.build
@@ -9,4 +9,5 @@ softmmu_ss.add(files(
'replay-net.c',
'replay-audio.c',
'replay-random.c',
+ 'replay-debugging.c',
))
diff --git a/replay/replay-debugging.c b/replay/replay-debugging.c
new file mode 100644
index 0000000000..51a6de4e81
--- /dev/null
+++ b/replay/replay-debugging.c
@@ -0,0 +1,43 @@
+/*
+ * replay-debugging.c
+ *
+ * Copyright (c) 2010-2020 Institute for System Programming
+ * of the Russian Academy of Sciences.
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ *
+ */
+
+#include "qemu/osdep.h"
+#include "qapi/error.h"
+#include "sysemu/replay.h"
+#include "replay-internal.h"
+#include "monitor/hmp.h"
+#include "monitor/monitor.h"
+#include "qapi/qapi-commands-replay.h"
+
+void hmp_info_replay(Monitor *mon, const QDict *qdict)
+{
+ if (replay_mode == REPLAY_MODE_NONE) {
+ monitor_printf(mon, "Record/replay is not active\n");
+ } else {
+ monitor_printf(mon,
+ "%s execution '%s': instruction count = %"PRId64"\n",
+ replay_mode == REPLAY_MODE_RECORD ? "Recording" : "Replaying",
+ replay_get_filename(), replay_get_current_icount());
+ }
+}
+
+ReplayInfo *qmp_query_replay(Error **errp)
+{
+ ReplayInfo *retval = g_new0(ReplayInfo, 1);
+
+ retval->mode = replay_mode;
+ if (replay_get_filename()) {
+ retval->filename = g_strdup(replay_get_filename());
+ retval->has_filename = true;
+ }
+ retval->icount = replay_get_current_icount();
+ return retval;
+}