summaryrefslogtreecommitdiffstats
path: root/include/sysemu/replay.h
diff options
context:
space:
mode:
authorPavel Dovgalyuk2016-03-14 08:44:36 +0100
committerPaolo Bonzini2016-03-15 18:23:40 +0100
commit33577b47c64435fcc2a1bc01c7e82534256f1fc3 (patch)
tree232204ccccc783d694b70e70d366e20a14a286ee /include/sysemu/replay.h
parentexec: fix early return from ram_block_add (diff)
downloadqemu-33577b47c64435fcc2a1bc01c7e82534256f1fc3.tar.gz
qemu-33577b47c64435fcc2a1bc01c7e82534256f1fc3.tar.xz
qemu-33577b47c64435fcc2a1bc01c7e82534256f1fc3.zip
replay: character devices
This patch implements record and replay of character devices. It records chardevs communication in replay mode. Recorded information include data read from backend and counter of bytes written from frontend to backend to preserve frontend internal state. If character device was configured through the command line in record mode, then in replay mode it should be also added to command line. Backend of the character device could be changed in replay mode. Replaying of devices that perform ioctl and get_msgfd operations is not supported. gdbstub which also acts as a backend is not recorded to allow controlling the replaying through gdb. Monitor backends are also not recorded. Signed-off-by: Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru> Message-Id: <20160314074436.4980.83856.stgit@PASHA-ISP> [Add stubs. - Paolo] Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'include/sysemu/replay.h')
-rw-r--r--include/sysemu/replay.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/include/sysemu/replay.h b/include/sysemu/replay.h
index e4108e8b1a..d24d50238e 100644
--- a/include/sysemu/replay.h
+++ b/include/sysemu/replay.h
@@ -114,4 +114,21 @@ void replay_input_event(QemuConsole *src, InputEvent *evt);
/*! Adds input sync event to the queue */
void replay_input_sync_event(void);
+/* Character device */
+
+/*! Registers char driver to save it's events */
+void replay_register_char_driver(struct CharDriverState *chr);
+/*! Saves write to char device event to the log */
+void replay_chr_be_write(struct CharDriverState *s, uint8_t *buf, int len);
+/*! Writes char write return value to the replay log. */
+void replay_char_write_event_save(int res, int offset);
+/*! Reads char write return value from the replay log. */
+void replay_char_write_event_load(int *res, int *offset);
+/*! Reads information about read_all character event. */
+int replay_char_read_all_load(uint8_t *buf);
+/*! Writes character read_all error code into the replay log. */
+void replay_char_read_all_save_error(int res);
+/*! Writes character read_all execution result into the replay log. */
+void replay_char_read_all_save_buf(uint8_t *buf, int offset);
+
#endif