mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 07:43:54 -06:00
replay: checkpoints
This patch introduces checkpoints that synchronize cpu thread and iothread. When checkpoint is met in the code all asynchronous events from the queue are executed. Signed-off-by: Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru> Message-Id: <20150917162444.8676.52916.stgit@PASHA-ISP.def.inno> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru>
This commit is contained in:
parent
efab87cf79
commit
8bd7f71d79
7 changed files with 134 additions and 12 deletions
|
@ -26,6 +26,20 @@ enum ReplayClockKind {
|
|||
};
|
||||
typedef enum ReplayClockKind ReplayClockKind;
|
||||
|
||||
/* IDs of the checkpoints */
|
||||
enum ReplayCheckpoint {
|
||||
CHECKPOINT_CLOCK_WARP,
|
||||
CHECKPOINT_RESET_REQUESTED,
|
||||
CHECKPOINT_SUSPEND_REQUESTED,
|
||||
CHECKPOINT_CLOCK_VIRTUAL,
|
||||
CHECKPOINT_CLOCK_HOST,
|
||||
CHECKPOINT_CLOCK_VIRTUAL_RT,
|
||||
CHECKPOINT_INIT,
|
||||
CHECKPOINT_RESET,
|
||||
CHECKPOINT_COUNT
|
||||
};
|
||||
typedef enum ReplayCheckpoint ReplayCheckpoint;
|
||||
|
||||
extern ReplayMode replay_mode;
|
||||
|
||||
/* Processing the instructions */
|
||||
|
@ -70,6 +84,12 @@ int64_t replay_read_clock(ReplayClockKind kind);
|
|||
|
||||
/*! Called when qemu shutdown is requested. */
|
||||
void replay_shutdown_request(void);
|
||||
/*! Should be called at check points in the execution.
|
||||
These check points are skipped, if they were not met.
|
||||
Saves checkpoint in the SAVE mode and validates in the PLAY mode.
|
||||
Returns 0 in PLAY mode if checkpoint was not found.
|
||||
Returns 1 in all other cases. */
|
||||
bool replay_checkpoint(ReplayCheckpoint checkpoint);
|
||||
|
||||
/* Asynchronous events queue */
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue