diff options
| author | Peter Maydell | 2016-03-15 18:56:14 +0100 |
|---|---|---|
| committer | Peter Maydell | 2016-03-15 18:56:14 +0100 |
| commit | 4caecccbc13b23c1e7344046f6d0c346be6297a3 (patch) | |
| tree | 6f19bd16f31096206358078e9d0d933117d3bbd2 /include | |
| parent | Merge remote-tracking branch 'remotes/thibault/tags/samuel-thibault' into sta... (diff) | |
| parent | icount: decouple warp calls (diff) | |
| download | qemu-4caecccbc13b23c1e7344046f6d0c346be6297a3.tar.gz qemu-4caecccbc13b23c1e7344046f6d0c346be6297a3.tar.xz qemu-4caecccbc13b23c1e7344046f6d0c346be6297a3.zip | |
Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging
* Miscellaneous exec.c fixes (Markus, myself)
* Q35 support for -machine kernel_irqchip=split (Rita)
* Chardev replay support (Pavel)
* icount "warping" cleanups (Pavel)
# gpg: Signature made Tue 15 Mar 2016 17:24:08 GMT using RSA key ID 78C7AE83
# gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>"
# gpg: aka "Paolo Bonzini <pbonzini@redhat.com>"
* remotes/bonzini/tags/for-upstream:
icount: decouple warp calls
icount: remove obsolete warp call
replay: character devices
exec: fix early return from ram_block_add
exec: Fix memory allocation when memory path isn't on hugetlbfs
exec: Fix memory allocation when memory path names new file
update-linux-headers: Add userfaultfd.h
kvm: x86: q35: Add support for -machine kernel_irqchip=split for q35
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'include')
| -rw-r--r-- | include/qemu/timer.h | 7 | ||||
| -rw-r--r-- | include/sysemu/char.h | 26 | ||||
| -rw-r--r-- | include/sysemu/replay.h | 20 |
3 files changed, 48 insertions, 5 deletions
diff --git a/include/qemu/timer.h b/include/qemu/timer.h index d0946cb953..7197d0859a 100644 --- a/include/qemu/timer.h +++ b/include/qemu/timer.h @@ -210,12 +210,11 @@ void qemu_clock_notify(QEMUClockType type); void qemu_clock_enable(QEMUClockType type, bool enabled); /** - * qemu_clock_warp: - * @type: the clock type + * qemu_start_warp_timer: * - * Warp a clock to a new value + * Starts a timer for virtual clock update */ -void qemu_clock_warp(QEMUClockType type); +void qemu_start_warp_timer(void); /** * qemu_clock_register_reset_notifier: diff --git a/include/sysemu/char.h b/include/sysemu/char.h index e46884f367..4c2f777ad1 100644 --- a/include/sysemu/char.h +++ b/include/sysemu/char.h @@ -86,6 +86,7 @@ struct CharDriverState { int is_mux; guint fd_in_tag; QemuOpts *opts; + bool replay; QTAILQ_ENTRY(CharDriverState) next; }; @@ -139,6 +140,22 @@ CharDriverState *qemu_chr_new(const char *label, const char *filename, void (*init)(struct CharDriverState *s)); /** + * @qemu_chr_new_noreplay: + * + * Create a new character backend from a URI. + * Character device communications are not written + * into the replay log. + * + * @label the name of the backend + * @filename the URI + * @init not sure.. + * + * Returns: a new character backend + */ +CharDriverState *qemu_chr_new_noreplay(const char *label, const char *filename, + void (*init)(struct CharDriverState *s)); + +/** * @qemu_chr_delete: * * Destroy a character backend and remove it from the list of @@ -341,6 +358,15 @@ int qemu_chr_be_can_write(CharDriverState *s); */ void qemu_chr_be_write(CharDriverState *s, uint8_t *buf, int len); +/** + * @qemu_chr_be_write_impl: + * + * Implementation of back end writing. Used by replay module. + * + * @buf a buffer to receive data from the front end + * @len the number of bytes to receive from the front end + */ +void qemu_chr_be_write_impl(CharDriverState *s, uint8_t *buf, int len); /** * @qemu_chr_be_event: diff --git a/include/sysemu/replay.h b/include/sysemu/replay.h index e4108e8b1a..e7989199fc 100644 --- a/include/sysemu/replay.h +++ b/include/sysemu/replay.h @@ -27,7 +27,8 @@ typedef enum ReplayClockKind ReplayClockKind; /* IDs of the checkpoints */ enum ReplayCheckpoint { - CHECKPOINT_CLOCK_WARP, + CHECKPOINT_CLOCK_WARP_START, + CHECKPOINT_CLOCK_WARP_ACCOUNT, CHECKPOINT_RESET_REQUESTED, CHECKPOINT_SUSPEND_REQUESTED, CHECKPOINT_CLOCK_VIRTUAL, @@ -114,4 +115,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 |
