|
@@ -38,15 +38,15 @@ bool replay_next_event_is(int event)
|
|
|
|
|
|
/* nothing to skip - not all instructions used */
|
|
|
if (replay_state.instructions_count != 0) {
|
|
|
- assert(replay_data_kind == EVENT_INSTRUCTION);
|
|
|
+ assert(replay_state.data_kind == EVENT_INSTRUCTION);
|
|
|
return event == EVENT_INSTRUCTION;
|
|
|
}
|
|
|
|
|
|
while (true) {
|
|
|
- if (event == replay_data_kind) {
|
|
|
+ if (event == replay_state.data_kind) {
|
|
|
res = true;
|
|
|
}
|
|
|
- switch (replay_data_kind) {
|
|
|
+ switch (replay_state.data_kind) {
|
|
|
case EVENT_SHUTDOWN:
|
|
|
replay_finish_event();
|
|
|
qemu_system_shutdown_request();
|
|
@@ -85,7 +85,7 @@ void replay_account_executed_instructions(void)
|
|
|
replay_state.instructions_count -= count;
|
|
|
replay_state.current_step += count;
|
|
|
if (replay_state.instructions_count == 0) {
|
|
|
- assert(replay_data_kind == EVENT_INSTRUCTION);
|
|
|
+ assert(replay_state.data_kind == EVENT_INSTRUCTION);
|
|
|
replay_finish_event();
|
|
|
/* Wake up iothread. This is required because
|
|
|
timers will not expire until clock counters
|
|
@@ -188,7 +188,7 @@ bool replay_checkpoint(ReplayCheckpoint checkpoint)
|
|
|
if (replay_mode == REPLAY_MODE_PLAY) {
|
|
|
if (replay_next_event_is(EVENT_CHECKPOINT + checkpoint)) {
|
|
|
replay_finish_event();
|
|
|
- } else if (replay_data_kind != EVENT_ASYNC) {
|
|
|
+ } else if (replay_state.data_kind != EVENT_ASYNC) {
|
|
|
res = false;
|
|
|
goto out;
|
|
|
}
|
|
@@ -196,7 +196,7 @@ bool replay_checkpoint(ReplayCheckpoint checkpoint)
|
|
|
/* replay_read_events may leave some unread events.
|
|
|
Return false if not all of the events associated with
|
|
|
checkpoint were processed */
|
|
|
- res = replay_data_kind != EVENT_ASYNC;
|
|
|
+ res = replay_state.data_kind != EVENT_ASYNC;
|
|
|
} else if (replay_mode == REPLAY_MODE_RECORD) {
|
|
|
replay_put_event(EVENT_CHECKPOINT + checkpoint);
|
|
|
replay_save_events(checkpoint);
|
|
@@ -237,9 +237,10 @@ static void replay_enable(const char *fname, int mode)
|
|
|
replay_filename = g_strdup(fname);
|
|
|
|
|
|
replay_mode = mode;
|
|
|
- replay_data_kind = -1;
|
|
|
+ replay_state.data_kind = -1;
|
|
|
replay_state.instructions_count = 0;
|
|
|
replay_state.current_step = 0;
|
|
|
+ replay_state.has_unread_data = 0;
|
|
|
|
|
|
/* skip file header for RECORD and check it for PLAY */
|
|
|
if (replay_mode == REPLAY_MODE_RECORD) {
|