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