From 26bc60ac82f88d14e65be5387eb4a136edf94f1b Mon Sep 17 00:00:00 2001 From: Pavel Dovgalyuk Date: Thu, 17 Sep 2015 19:23:54 +0300 Subject: 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 Signed-off-by: Pavel Dovgalyuk Message-Id: <20150917162354.8676.31351.stgit@PASHA-ISP.def.inno> Signed-off-by: Paolo Bonzini --- replay/replay.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'replay/replay.c') diff --git a/replay/replay.c b/replay/replay.c index a0ef04f..62e8aba 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(); +} -- cgit v1.1