]>
Commit | Line | Data |
---|---|---|
43d7e1d7 | 1 | # -*- Mode: Python -*- |
7e7237cd | 2 | # vim: filetype=python |
43d7e1d7 PD |
3 | # |
4 | ||
5 | ## | |
6 | # = Record/replay | |
7 | ## | |
8 | ||
9 | { 'include': 'common.json' } | |
10 | ||
11 | ## | |
12 | # @ReplayMode: | |
13 | # | |
14 | # Mode of the replay subsystem. | |
15 | # | |
a937b6aa | 16 | # @none: normal execution mode. Replay or record are not enabled. |
43d7e1d7 | 17 | # |
a937b6aa MA |
18 | # @record: record mode. All non-deterministic data is written into |
19 | # the replay log. | |
43d7e1d7 | 20 | # |
a937b6aa MA |
21 | # @play: replay mode. Non-deterministic data required for system |
22 | # execution is read from the log. | |
43d7e1d7 PD |
23 | # |
24 | # Since: 2.5 | |
25 | ## | |
26 | { 'enum': 'ReplayMode', | |
27 | 'data': [ 'none', 'record', 'play' ] } | |
e3b09ad2 PD |
28 | |
29 | ## | |
30 | # @ReplayInfo: | |
31 | # | |
32 | # Record/replay information. | |
33 | # | |
34 | # @mode: current mode. | |
35 | # | |
a937b6aa MA |
36 | # @filename: name of the record/replay log file. It is present only |
37 | # in record or replay modes, when the log is recorded or replayed. | |
e3b09ad2 PD |
38 | # |
39 | # @icount: current number of executed instructions. | |
40 | # | |
41 | # Since: 5.2 | |
e3b09ad2 PD |
42 | ## |
43 | { 'struct': 'ReplayInfo', | |
44 | 'data': { 'mode': 'ReplayMode', '*filename': 'str', 'icount': 'int' } } | |
45 | ||
46 | ## | |
47 | # @query-replay: | |
48 | # | |
a937b6aa MA |
49 | # Retrieve the record/replay information. It includes current |
50 | # instruction count which may be used for @replay-break and | |
51 | # @replay-seek commands. | |
e3b09ad2 PD |
52 | # |
53 | # Returns: record/replay information. | |
54 | # | |
55 | # Since: 5.2 | |
56 | # | |
57 | # Example: | |
58 | # | |
59 | # -> { "execute": "query-replay" } | |
60 | # <- { "return": { "mode": "play", "filename": "log.rr", "icount": 220414 } } | |
e3b09ad2 PD |
61 | ## |
62 | { 'command': 'query-replay', | |
63 | 'returns': 'ReplayInfo' } | |
e7510671 PD |
64 | |
65 | ## | |
66 | # @replay-break: | |
67 | # | |
a937b6aa MA |
68 | # Set replay breakpoint at instruction count @icount. Execution stops |
69 | # when the specified instruction is reached. There can be at most one | |
70 | # breakpoint. When breakpoint is set, any prior one is removed. The | |
71 | # breakpoint may be set only in replay mode and only "in the future", | |
72 | # i.e. at instruction counts greater than the current one. The | |
73 | # current instruction count can be observed with @query-replay. | |
e7510671 PD |
74 | # |
75 | # @icount: instruction count to stop at | |
76 | # | |
77 | # Since: 5.2 | |
78 | # | |
79 | # Example: | |
80 | # | |
227a762b | 81 | # -> { "execute": "replay-break", "arguments": { "icount": 220414 } } |
37fa48a4 | 82 | # <- { "return": {} } |
e7510671 PD |
83 | ## |
84 | { 'command': 'replay-break', 'data': { 'icount': 'int' } } | |
85 | ||
86 | ## | |
87 | # @replay-delete-break: | |
88 | # | |
a937b6aa MA |
89 | # Remove replay breakpoint which was set with @replay-break. The |
90 | # command is ignored when there are no replay breakpoints. | |
e7510671 PD |
91 | # |
92 | # Since: 5.2 | |
93 | # | |
94 | # Example: | |
95 | # | |
96 | # -> { "execute": "replay-delete-break" } | |
37fa48a4 | 97 | # <- { "return": {} } |
e7510671 PD |
98 | ## |
99 | { 'command': 'replay-delete-break' } | |
f6baed3d PD |
100 | |
101 | ## | |
102 | # @replay-seek: | |
103 | # | |
104 | # Automatically proceed to the instruction count @icount, when | |
a937b6aa | 105 | # replaying the execution. The command automatically loads nearest |
f6baed3d | 106 | # snapshot and replays the execution to find the desired instruction. |
a937b6aa MA |
107 | # When there is no preceding snapshot or the execution is not |
108 | # replayed, then the command fails. icount for the reference may be | |
109 | # obtained with @query-replay command. | |
f6baed3d PD |
110 | # |
111 | # @icount: target instruction count | |
112 | # | |
113 | # Since: 5.2 | |
114 | # | |
115 | # Example: | |
116 | # | |
227a762b | 117 | # -> { "execute": "replay-seek", "arguments": { "icount": 220414 } } |
37fa48a4 | 118 | # <- { "return": {} } |
f6baed3d PD |
119 | ## |
120 | { 'command': 'replay-seek', 'data': { 'icount': 'int' } } |