# -*- Mode: Python -*-
# vim: filetype=python
#

##
# = Record/replay
##

{ 'include': 'common.json' }

##
# @ReplayMode:
#
# Mode of the replay subsystem.
#
# @none: normal execution mode.  Replay or record are not enabled.
#
# @record: record mode.  All non-deterministic data is written into
#     the replay log.
#
# @play: replay mode.  Non-deterministic data required for system
#     execution is read from the log.
#
# Since: 2.5
##
{ 'enum': 'ReplayMode',
  'data': [ 'none', 'record', 'play' ] }

##
# @ReplayInfo:
#
# Record/replay information.
#
# @mode: current mode.
#
# @filename: name of the record/replay log file.  It is present only
#     in record or replay modes, when the log is recorded or replayed.
#
# @icount: current number of executed instructions.
#
# Since: 5.2
##
{ 'struct': 'ReplayInfo',
  'data': { 'mode': 'ReplayMode', '*filename': 'str', 'icount': 'int' } }

##
# @query-replay:
#
# Retrieve the record/replay information.  It includes current
# instruction count which may be used for @replay-break and
# @replay-seek commands.
#
# Returns: record/replay information.
#
# Since: 5.2
#
# .. qmp-example::
#
#     -> { "execute": "query-replay" }
#     <- { "return": { "mode": "play", "filename": "log.rr", "icount": 220414 } }
##
{ 'command': 'query-replay',
  'returns': 'ReplayInfo' }

##
# @replay-break:
#
# Set replay breakpoint at instruction count @icount.  Execution stops
# when the specified instruction is reached.  There can be at most one
# breakpoint.  When breakpoint is set, any prior one is removed.  The
# breakpoint may be set only in replay mode and only "in the future",
# i.e. at instruction counts greater than the current one.  The
# current instruction count can be observed with @query-replay.
#
# @icount: instruction count to stop at
#
# Since: 5.2
#
# .. qmp-example::
#
#     -> { "execute": "replay-break", "arguments": { "icount": 220414 } }
#     <- { "return": {} }
##
{ 'command': 'replay-break', 'data': { 'icount': 'int' } }

##
# @replay-delete-break:
#
# Remove replay breakpoint which was set with @replay-break.  The
# command is ignored when there are no replay breakpoints.
#
# Since: 5.2
#
# .. qmp-example::
#
#     -> { "execute": "replay-delete-break" }
#     <- { "return": {} }
##
{ 'command': 'replay-delete-break' }

##
# @replay-seek:
#
# Automatically proceed to the instruction count @icount, when
# replaying the execution.  The command automatically loads nearest
# snapshot and replays the execution to find the desired instruction.
# When there is no preceding snapshot or the execution is not
# replayed, then the command fails.  Instruction count can be obtained
# with the @query-replay command.
#
# @icount: target instruction count
#
# Since: 5.2
#
# .. qmp-example::
#
#     -> { "execute": "replay-seek", "arguments": { "icount": 220414 } }
#     <- { "return": {} }
##
{ 'command': 'replay-seek', 'data': { 'icount': 'int' } }
