# -*- 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' } }
