diff options
author | Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru> | 2015-09-17 19:23:54 +0300 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2015-11-05 12:19:09 +0100 |
commit | 26bc60ac82f88d14e65be5387eb4a136edf94f1b (patch) | |
tree | 978afbc06fc76ae179e5a1fceab66439bc5eef05 /replay/replay.c | |
parent | c16861ef1b7b27803b4c068ef778ba0f80fba1c2 (diff) | |
download | qemu-26bc60ac82f88d14e65be5387eb4a136edf94f1b.tar.gz qemu-26bc60ac82f88d14e65be5387eb4a136edf94f1b.tar.bz2 qemu-26bc60ac82f88d14e65be5387eb4a136edf94f1b.zip |
replay: introduce icount event
This patch adds icount event to the replay subsystem. This event corresponds
to execution of several instructions and used to synchronize input events
in the replay phase.
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>
Message-Id: <20150917162354.8676.31351.stgit@PASHA-ISP.def.inno>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'replay/replay.c')
-rw-r--r-- | replay/replay.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/replay/replay.c b/replay/replay.c index a0ef04f822..62e8abaadf 100644 --- a/replay/replay.c +++ b/replay/replay.c @@ -9,6 +9,39 @@ * */ +#include "qemu-common.h" #include "sysemu/replay.h" +#include "replay-internal.h" +#include "qemu/timer.h" ReplayMode replay_mode = REPLAY_MODE_NONE; + +ReplayState replay_state; + +bool replay_next_event_is(int event) +{ + bool res = false; + + /* nothing to skip - not all instructions used */ + if (replay_state.instructions_count != 0) { + assert(replay_data_kind == EVENT_INSTRUCTION); + return event == EVENT_INSTRUCTION; + } + + while (true) { + if (event == replay_data_kind) { + res = true; + } + switch (replay_data_kind) { + default: + /* clock, time_t, checkpoint and other events */ + return res; + } + } + return res; +} + +uint64_t replay_get_current_step(void) +{ + return cpu_get_icount_raw(); +} |