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