root / tests / libqtest.h @ 94befa45
History | View | Annotate | Download (8.3 kB)
1 | 49ee3590 | Anthony Liguori | /*
|
---|---|---|---|
2 | 49ee3590 | Anthony Liguori | * QTest
|
3 | 49ee3590 | Anthony Liguori | *
|
4 | 49ee3590 | Anthony Liguori | * Copyright IBM, Corp. 2012
|
5 | 49ee3590 | Anthony Liguori | * Copyright Red Hat, Inc. 2012
|
6 | 49ee3590 | Anthony Liguori | *
|
7 | 49ee3590 | Anthony Liguori | * Authors:
|
8 | 49ee3590 | Anthony Liguori | * Anthony Liguori <aliguori@us.ibm.com>
|
9 | 49ee3590 | Anthony Liguori | * Paolo Bonzini <pbonzini@redhat.com>
|
10 | 49ee3590 | Anthony Liguori | *
|
11 | 49ee3590 | Anthony Liguori | * This work is licensed under the terms of the GNU GPL, version 2 or later.
|
12 | 49ee3590 | Anthony Liguori | * See the COPYING file in the top-level directory.
|
13 | 49ee3590 | Anthony Liguori | *
|
14 | 49ee3590 | Anthony Liguori | */
|
15 | 49ee3590 | Anthony Liguori | #ifndef LIBQTEST_H
|
16 | 49ee3590 | Anthony Liguori | #define LIBQTEST_H
|
17 | 49ee3590 | Anthony Liguori | |
18 | 49ee3590 | Anthony Liguori | #include <stdint.h> |
19 | 49ee3590 | Anthony Liguori | #include <stdbool.h> |
20 | 49ee3590 | Anthony Liguori | #include <sys/types.h> |
21 | 49ee3590 | Anthony Liguori | |
22 | 49ee3590 | Anthony Liguori | typedef struct QTestState QTestState; |
23 | 49ee3590 | Anthony Liguori | |
24 | 49ee3590 | Anthony Liguori | extern QTestState *global_qtest;
|
25 | 49ee3590 | Anthony Liguori | |
26 | 49ee3590 | Anthony Liguori | /**
|
27 | 49ee3590 | Anthony Liguori | * qtest_init:
|
28 | 49ee3590 | Anthony Liguori | * @extra_args: other arguments to pass to QEMU.
|
29 | 49ee3590 | Anthony Liguori | */
|
30 | 49ee3590 | Anthony Liguori | QTestState *qtest_init(const char *extra_args); |
31 | 49ee3590 | Anthony Liguori | |
32 | 49ee3590 | Anthony Liguori | /**
|
33 | 49ee3590 | Anthony Liguori | * qtest_quit:
|
34 | 49ee3590 | Anthony Liguori | * @s: QTestState instance to operate on.
|
35 | 49ee3590 | Anthony Liguori | *
|
36 | 49ee3590 | Anthony Liguori | * Shut down the QEMU process associated to @s.
|
37 | 49ee3590 | Anthony Liguori | */
|
38 | 49ee3590 | Anthony Liguori | void qtest_quit(QTestState *s);
|
39 | 49ee3590 | Anthony Liguori | |
40 | 49ee3590 | Anthony Liguori | /**
|
41 | a3ca163c | Kevin Wolf | * qtest_qmp:
|
42 | a3ca163c | Kevin Wolf | * @s: QTestState instance to operate on.
|
43 | a3ca163c | Kevin Wolf | * @fmt...: QMP message to send to qemu
|
44 | a3ca163c | Kevin Wolf | *
|
45 | a3ca163c | Kevin Wolf | * Sends a QMP message to QEMU
|
46 | a3ca163c | Kevin Wolf | */
|
47 | a3ca163c | Kevin Wolf | void qtest_qmp(QTestState *s, const char *fmt, ...); |
48 | a3ca163c | Kevin Wolf | |
49 | a3ca163c | Kevin Wolf | /**
|
50 | 49ee3590 | Anthony Liguori | * qtest_get_irq:
|
51 | 49ee3590 | Anthony Liguori | * @s: QTestState instance to operate on.
|
52 | 49ee3590 | Anthony Liguori | * @num: Interrupt to observe.
|
53 | 49ee3590 | Anthony Liguori | *
|
54 | 49ee3590 | Anthony Liguori | * Return the level of the @num interrupt.
|
55 | 49ee3590 | Anthony Liguori | */
|
56 | 49ee3590 | Anthony Liguori | bool qtest_get_irq(QTestState *s, int num); |
57 | 49ee3590 | Anthony Liguori | |
58 | 49ee3590 | Anthony Liguori | /**
|
59 | 49ee3590 | Anthony Liguori | * qtest_irq_intercept_in:
|
60 | 49ee3590 | Anthony Liguori | * @s: QTestState instance to operate on.
|
61 | 49ee3590 | Anthony Liguori | * @string: QOM path of a device.
|
62 | 49ee3590 | Anthony Liguori | *
|
63 | 49ee3590 | Anthony Liguori | * Associate qtest irqs with the GPIO-in pins of the device
|
64 | 49ee3590 | Anthony Liguori | * whose path is specified by @string.
|
65 | 49ee3590 | Anthony Liguori | */
|
66 | 49ee3590 | Anthony Liguori | void qtest_irq_intercept_in(QTestState *s, const char *string); |
67 | 49ee3590 | Anthony Liguori | |
68 | 49ee3590 | Anthony Liguori | /**
|
69 | 49ee3590 | Anthony Liguori | * qtest_irq_intercept_out:
|
70 | 49ee3590 | Anthony Liguori | * @s: QTestState instance to operate on.
|
71 | 49ee3590 | Anthony Liguori | * @string: QOM path of a device.
|
72 | 49ee3590 | Anthony Liguori | *
|
73 | 49ee3590 | Anthony Liguori | * Associate qtest irqs with the GPIO-out pins of the device
|
74 | 49ee3590 | Anthony Liguori | * whose path is specified by @string.
|
75 | 49ee3590 | Anthony Liguori | */
|
76 | 49ee3590 | Anthony Liguori | void qtest_irq_intercept_out(QTestState *s, const char *string); |
77 | 49ee3590 | Anthony Liguori | |
78 | 49ee3590 | Anthony Liguori | /**
|
79 | 49ee3590 | Anthony Liguori | * qtest_outb:
|
80 | 49ee3590 | Anthony Liguori | * @s: QTestState instance to operate on.
|
81 | 49ee3590 | Anthony Liguori | * @addr: I/O port to write to.
|
82 | 49ee3590 | Anthony Liguori | * @value: Value being written.
|
83 | 49ee3590 | Anthony Liguori | *
|
84 | 49ee3590 | Anthony Liguori | * Write an 8-bit value to an I/O port.
|
85 | 49ee3590 | Anthony Liguori | */
|
86 | 49ee3590 | Anthony Liguori | void qtest_outb(QTestState *s, uint16_t addr, uint8_t value);
|
87 | 49ee3590 | Anthony Liguori | |
88 | 49ee3590 | Anthony Liguori | /**
|
89 | 49ee3590 | Anthony Liguori | * qtest_outw:
|
90 | 49ee3590 | Anthony Liguori | * @s: QTestState instance to operate on.
|
91 | 49ee3590 | Anthony Liguori | * @addr: I/O port to write to.
|
92 | 49ee3590 | Anthony Liguori | * @value: Value being written.
|
93 | 49ee3590 | Anthony Liguori | *
|
94 | 49ee3590 | Anthony Liguori | * Write a 16-bit value to an I/O port.
|
95 | 49ee3590 | Anthony Liguori | */
|
96 | 49ee3590 | Anthony Liguori | void qtest_outw(QTestState *s, uint16_t addr, uint16_t value);
|
97 | 49ee3590 | Anthony Liguori | |
98 | 49ee3590 | Anthony Liguori | /**
|
99 | 49ee3590 | Anthony Liguori | * qtest_outl:
|
100 | 49ee3590 | Anthony Liguori | * @s: QTestState instance to operate on.
|
101 | 49ee3590 | Anthony Liguori | * @addr: I/O port to write to.
|
102 | 49ee3590 | Anthony Liguori | * @value: Value being written.
|
103 | 49ee3590 | Anthony Liguori | *
|
104 | 49ee3590 | Anthony Liguori | * Write a 32-bit value to an I/O port.
|
105 | 49ee3590 | Anthony Liguori | */
|
106 | 49ee3590 | Anthony Liguori | void qtest_outl(QTestState *s, uint16_t addr, uint32_t value);
|
107 | 49ee3590 | Anthony Liguori | |
108 | 49ee3590 | Anthony Liguori | /**
|
109 | 49ee3590 | Anthony Liguori | * qtest_inb:
|
110 | 49ee3590 | Anthony Liguori | * @s: QTestState instance to operate on.
|
111 | 49ee3590 | Anthony Liguori | * @addr: I/O port to read from.
|
112 | 49ee3590 | Anthony Liguori | * @value: Value being written.
|
113 | 49ee3590 | Anthony Liguori | *
|
114 | 49ee3590 | Anthony Liguori | * Returns an 8-bit value from an I/O port.
|
115 | 49ee3590 | Anthony Liguori | */
|
116 | 49ee3590 | Anthony Liguori | uint8_t qtest_inb(QTestState *s, uint16_t addr); |
117 | 49ee3590 | Anthony Liguori | |
118 | 49ee3590 | Anthony Liguori | /**
|
119 | 49ee3590 | Anthony Liguori | * qtest_inw:
|
120 | 49ee3590 | Anthony Liguori | * @s: QTestState instance to operate on.
|
121 | 49ee3590 | Anthony Liguori | * @addr: I/O port to read from.
|
122 | 49ee3590 | Anthony Liguori | * @value: Value being written.
|
123 | 49ee3590 | Anthony Liguori | *
|
124 | 49ee3590 | Anthony Liguori | * Returns a 16-bit value from an I/O port.
|
125 | 49ee3590 | Anthony Liguori | */
|
126 | 49ee3590 | Anthony Liguori | uint16_t qtest_inw(QTestState *s, uint16_t addr); |
127 | 49ee3590 | Anthony Liguori | |
128 | 49ee3590 | Anthony Liguori | /**
|
129 | 49ee3590 | Anthony Liguori | * qtest_inl:
|
130 | 49ee3590 | Anthony Liguori | * @s: QTestState instance to operate on.
|
131 | 49ee3590 | Anthony Liguori | * @addr: I/O port to read from.
|
132 | 49ee3590 | Anthony Liguori | * @value: Value being written.
|
133 | 49ee3590 | Anthony Liguori | *
|
134 | 49ee3590 | Anthony Liguori | * Returns a 32-bit value from an I/O port.
|
135 | 49ee3590 | Anthony Liguori | */
|
136 | 49ee3590 | Anthony Liguori | uint32_t qtest_inl(QTestState *s, uint16_t addr); |
137 | 49ee3590 | Anthony Liguori | |
138 | 49ee3590 | Anthony Liguori | /**
|
139 | 49ee3590 | Anthony Liguori | * qtest_memread:
|
140 | 49ee3590 | Anthony Liguori | * @s: QTestState instance to operate on.
|
141 | 49ee3590 | Anthony Liguori | * @addr: Guest address to read from.
|
142 | 49ee3590 | Anthony Liguori | * @data: Pointer to where memory contents will be stored.
|
143 | 49ee3590 | Anthony Liguori | * @size: Number of bytes to read.
|
144 | 49ee3590 | Anthony Liguori | *
|
145 | 49ee3590 | Anthony Liguori | * Read guest memory into a buffer.
|
146 | 49ee3590 | Anthony Liguori | */
|
147 | 49ee3590 | Anthony Liguori | void qtest_memread(QTestState *s, uint64_t addr, void *data, size_t size); |
148 | 49ee3590 | Anthony Liguori | |
149 | 49ee3590 | Anthony Liguori | /**
|
150 | 49ee3590 | Anthony Liguori | * qtest_memwrite:
|
151 | 49ee3590 | Anthony Liguori | * @s: QTestState instance to operate on.
|
152 | 49ee3590 | Anthony Liguori | * @addr: Guest address to write to.
|
153 | 49ee3590 | Anthony Liguori | * @data: Pointer to the bytes that will be written to guest memory.
|
154 | 49ee3590 | Anthony Liguori | * @size: Number of bytes to write.
|
155 | 49ee3590 | Anthony Liguori | *
|
156 | 49ee3590 | Anthony Liguori | * Write a buffer to guest memory.
|
157 | 49ee3590 | Anthony Liguori | */
|
158 | 49ee3590 | Anthony Liguori | void qtest_memwrite(QTestState *s, uint64_t addr, const void *data, size_t size); |
159 | 49ee3590 | Anthony Liguori | |
160 | 49ee3590 | Anthony Liguori | /**
|
161 | 49ee3590 | Anthony Liguori | * qtest_clock_step_next:
|
162 | 49ee3590 | Anthony Liguori | * @s: QTestState instance to operate on.
|
163 | 49ee3590 | Anthony Liguori | *
|
164 | 49ee3590 | Anthony Liguori | * Advance the vm_clock to the next deadline. Return the current
|
165 | 49ee3590 | Anthony Liguori | * value of the vm_clock in nanoseconds.
|
166 | 49ee3590 | Anthony Liguori | */
|
167 | 49ee3590 | Anthony Liguori | int64_t qtest_clock_step_next(QTestState *s); |
168 | 49ee3590 | Anthony Liguori | |
169 | 49ee3590 | Anthony Liguori | /**
|
170 | 49ee3590 | Anthony Liguori | * qtest_clock_step:
|
171 | 49ee3590 | Anthony Liguori | * @s: QTestState instance to operate on.
|
172 | 49ee3590 | Anthony Liguori | * @step: Number of nanoseconds to advance the clock by.
|
173 | 49ee3590 | Anthony Liguori | *
|
174 | 49ee3590 | Anthony Liguori | * Advance the vm_clock by @step nanoseconds. Return the current
|
175 | 49ee3590 | Anthony Liguori | * value of the vm_clock in nanoseconds.
|
176 | 49ee3590 | Anthony Liguori | */
|
177 | 49ee3590 | Anthony Liguori | int64_t qtest_clock_step(QTestState *s, int64_t step); |
178 | 49ee3590 | Anthony Liguori | |
179 | 49ee3590 | Anthony Liguori | /**
|
180 | 49ee3590 | Anthony Liguori | * qtest_clock_set:
|
181 | 49ee3590 | Anthony Liguori | * @s: QTestState instance to operate on.
|
182 | 49ee3590 | Anthony Liguori | * @val: Nanoseconds value to advance the clock to.
|
183 | 49ee3590 | Anthony Liguori | *
|
184 | 49ee3590 | Anthony Liguori | * Advance the vm_clock to @val nanoseconds since the VM was launched.
|
185 | 49ee3590 | Anthony Liguori | * Return the current value of the vm_clock in nanoseconds.
|
186 | 49ee3590 | Anthony Liguori | */
|
187 | 49ee3590 | Anthony Liguori | int64_t qtest_clock_set(QTestState *s, int64_t val); |
188 | 49ee3590 | Anthony Liguori | |
189 | 49ee3590 | Anthony Liguori | /**
|
190 | 49ee3590 | Anthony Liguori | * qtest_get_arch:
|
191 | 49ee3590 | Anthony Liguori | *
|
192 | 49ee3590 | Anthony Liguori | * Returns the architecture for the QEMU executable under test.
|
193 | 49ee3590 | Anthony Liguori | */
|
194 | 49ee3590 | Anthony Liguori | const char *qtest_get_arch(void); |
195 | 49ee3590 | Anthony Liguori | |
196 | 49ee3590 | Anthony Liguori | /**
|
197 | 49ee3590 | Anthony Liguori | * qtest_add_func:
|
198 | 49ee3590 | Anthony Liguori | * @str: Test case path.
|
199 | 49ee3590 | Anthony Liguori | * @fn: Test case function
|
200 | 49ee3590 | Anthony Liguori | *
|
201 | 49ee3590 | Anthony Liguori | * Add a GTester testcase with the given name and function.
|
202 | 49ee3590 | Anthony Liguori | * The path is prefixed with the architecture under test, as
|
203 | 49ee3590 | Anthony Liguori | * returned by qtest_get_arch.
|
204 | 49ee3590 | Anthony Liguori | */
|
205 | 49ee3590 | Anthony Liguori | void qtest_add_func(const char *str, void (*fn)); |
206 | 49ee3590 | Anthony Liguori | |
207 | 49ee3590 | Anthony Liguori | /**
|
208 | 49ee3590 | Anthony Liguori | * qtest_start:
|
209 | 49ee3590 | Anthony Liguori | * @args: other arguments to pass to QEMU
|
210 | 49ee3590 | Anthony Liguori | *
|
211 | 49ee3590 | Anthony Liguori | * Start QEMU and assign the resulting QTestState to a global variable.
|
212 | 49ee3590 | Anthony Liguori | * The global variable is used by "shortcut" macros documented below.
|
213 | 49ee3590 | Anthony Liguori | */
|
214 | 49ee3590 | Anthony Liguori | #define qtest_start(args) ( \
|
215 | 49ee3590 | Anthony Liguori | global_qtest = qtest_init((args)) \ |
216 | 49ee3590 | Anthony Liguori | ) |
217 | 49ee3590 | Anthony Liguori | |
218 | 49ee3590 | Anthony Liguori | /**
|
219 | a3ca163c | Kevin Wolf | * qmp:
|
220 | a3ca163c | Kevin Wolf | * @fmt...: QMP message to send to qemu
|
221 | a3ca163c | Kevin Wolf | *
|
222 | a3ca163c | Kevin Wolf | * Sends a QMP message to QEMU
|
223 | a3ca163c | Kevin Wolf | */
|
224 | a3ca163c | Kevin Wolf | #define qmp(fmt, ...) qtest_qmp(global_qtest, fmt, ## __VA_ARGS__) |
225 | a3ca163c | Kevin Wolf | |
226 | a3ca163c | Kevin Wolf | /**
|
227 | 49ee3590 | Anthony Liguori | * get_irq:
|
228 | 49ee3590 | Anthony Liguori | * @num: Interrupt to observe.
|
229 | 49ee3590 | Anthony Liguori | *
|
230 | 49ee3590 | Anthony Liguori | * Return the level of the @num interrupt.
|
231 | 49ee3590 | Anthony Liguori | */
|
232 | 49ee3590 | Anthony Liguori | #define get_irq(num) qtest_get_irq(global_qtest, num)
|
233 | 49ee3590 | Anthony Liguori | |
234 | 49ee3590 | Anthony Liguori | /**
|
235 | 49ee3590 | Anthony Liguori | * irq_intercept_in:
|
236 | 49ee3590 | Anthony Liguori | * @string: QOM path of a device.
|
237 | 49ee3590 | Anthony Liguori | *
|
238 | 49ee3590 | Anthony Liguori | * Associate qtest irqs with the GPIO-in pins of the device
|
239 | 49ee3590 | Anthony Liguori | * whose path is specified by @string.
|
240 | 49ee3590 | Anthony Liguori | */
|
241 | 49ee3590 | Anthony Liguori | #define irq_intercept_in(string) qtest_irq_intercept_in(global_qtest, string)
|
242 | 49ee3590 | Anthony Liguori | |
243 | 49ee3590 | Anthony Liguori | /**
|
244 | 49ee3590 | Anthony Liguori | * qtest_irq_intercept_out:
|
245 | 49ee3590 | Anthony Liguori | * @string: QOM path of a device.
|
246 | 49ee3590 | Anthony Liguori | *
|
247 | 49ee3590 | Anthony Liguori | * Associate qtest irqs with the GPIO-out pins of the device
|
248 | 49ee3590 | Anthony Liguori | * whose path is specified by @string.
|
249 | 49ee3590 | Anthony Liguori | */
|
250 | 49ee3590 | Anthony Liguori | #define irq_intercept_out(string) qtest_irq_intercept_out(global_qtest, string)
|
251 | 49ee3590 | Anthony Liguori | |
252 | 49ee3590 | Anthony Liguori | /**
|
253 | 49ee3590 | Anthony Liguori | * outb:
|
254 | 49ee3590 | Anthony Liguori | * @addr: I/O port to write to.
|
255 | 49ee3590 | Anthony Liguori | * @value: Value being written.
|
256 | 49ee3590 | Anthony Liguori | *
|
257 | 49ee3590 | Anthony Liguori | * Write an 8-bit value to an I/O port.
|
258 | 49ee3590 | Anthony Liguori | */
|
259 | 49ee3590 | Anthony Liguori | #define outb(addr, val) qtest_outb(global_qtest, addr, val)
|
260 | 49ee3590 | Anthony Liguori | |
261 | 49ee3590 | Anthony Liguori | /**
|
262 | 49ee3590 | Anthony Liguori | * outw:
|
263 | 49ee3590 | Anthony Liguori | * @addr: I/O port to write to.
|
264 | 49ee3590 | Anthony Liguori | * @value: Value being written.
|
265 | 49ee3590 | Anthony Liguori | *
|
266 | 49ee3590 | Anthony Liguori | * Write a 16-bit value to an I/O port.
|
267 | 49ee3590 | Anthony Liguori | */
|
268 | 49ee3590 | Anthony Liguori | #define outw(addr, val) qtest_outw(global_qtest, addr, val)
|
269 | 49ee3590 | Anthony Liguori | |
270 | 49ee3590 | Anthony Liguori | /**
|
271 | 49ee3590 | Anthony Liguori | * outl:
|
272 | 49ee3590 | Anthony Liguori | * @addr: I/O port to write to.
|
273 | 49ee3590 | Anthony Liguori | * @value: Value being written.
|
274 | 49ee3590 | Anthony Liguori | *
|
275 | 49ee3590 | Anthony Liguori | * Write a 32-bit value to an I/O port.
|
276 | 49ee3590 | Anthony Liguori | */
|
277 | 49ee3590 | Anthony Liguori | #define outl(addr, val) qtest_outl(global_qtest, addr, val)
|
278 | 49ee3590 | Anthony Liguori | |
279 | 49ee3590 | Anthony Liguori | /**
|
280 | 49ee3590 | Anthony Liguori | * inb:
|
281 | 49ee3590 | Anthony Liguori | * @addr: I/O port to read from.
|
282 | 49ee3590 | Anthony Liguori | * @value: Value being written.
|
283 | 49ee3590 | Anthony Liguori | *
|
284 | 49ee3590 | Anthony Liguori | * Returns an 8-bit value from an I/O port.
|
285 | 49ee3590 | Anthony Liguori | */
|
286 | 49ee3590 | Anthony Liguori | #define inb(addr) qtest_inb(global_qtest, addr)
|
287 | 49ee3590 | Anthony Liguori | |
288 | 49ee3590 | Anthony Liguori | /**
|
289 | 49ee3590 | Anthony Liguori | * inw:
|
290 | 49ee3590 | Anthony Liguori | * @addr: I/O port to read from.
|
291 | 49ee3590 | Anthony Liguori | * @value: Value being written.
|
292 | 49ee3590 | Anthony Liguori | *
|
293 | 49ee3590 | Anthony Liguori | * Returns a 16-bit value from an I/O port.
|
294 | 49ee3590 | Anthony Liguori | */
|
295 | 49ee3590 | Anthony Liguori | #define inw(addr) qtest_inw(global_qtest, addr)
|
296 | 49ee3590 | Anthony Liguori | |
297 | 49ee3590 | Anthony Liguori | /**
|
298 | 49ee3590 | Anthony Liguori | * inl:
|
299 | 49ee3590 | Anthony Liguori | * @addr: I/O port to read from.
|
300 | 49ee3590 | Anthony Liguori | * @value: Value being written.
|
301 | 49ee3590 | Anthony Liguori | *
|
302 | 49ee3590 | Anthony Liguori | * Returns a 32-bit value from an I/O port.
|
303 | 49ee3590 | Anthony Liguori | */
|
304 | 49ee3590 | Anthony Liguori | #define inl(addr) qtest_inl(global_qtest, addr)
|
305 | 49ee3590 | Anthony Liguori | |
306 | 49ee3590 | Anthony Liguori | /**
|
307 | 49ee3590 | Anthony Liguori | * memread:
|
308 | 49ee3590 | Anthony Liguori | * @addr: Guest address to read from.
|
309 | 49ee3590 | Anthony Liguori | * @data: Pointer to where memory contents will be stored.
|
310 | 49ee3590 | Anthony Liguori | * @size: Number of bytes to read.
|
311 | 49ee3590 | Anthony Liguori | *
|
312 | 49ee3590 | Anthony Liguori | * Read guest memory into a buffer.
|
313 | 49ee3590 | Anthony Liguori | */
|
314 | 49ee3590 | Anthony Liguori | #define memread(addr, data, size) qtest_memread(global_qtest, addr, data, size)
|
315 | 49ee3590 | Anthony Liguori | |
316 | 49ee3590 | Anthony Liguori | /**
|
317 | 49ee3590 | Anthony Liguori | * memwrite:
|
318 | 49ee3590 | Anthony Liguori | * @addr: Guest address to write to.
|
319 | 49ee3590 | Anthony Liguori | * @data: Pointer to the bytes that will be written to guest memory.
|
320 | 49ee3590 | Anthony Liguori | * @size: Number of bytes to write.
|
321 | 49ee3590 | Anthony Liguori | *
|
322 | 49ee3590 | Anthony Liguori | * Write a buffer to guest memory.
|
323 | 49ee3590 | Anthony Liguori | */
|
324 | 49ee3590 | Anthony Liguori | #define memwrite(addr, data, size) qtest_memwrite(global_qtest, addr, data, size)
|
325 | 49ee3590 | Anthony Liguori | |
326 | 49ee3590 | Anthony Liguori | /**
|
327 | 49ee3590 | Anthony Liguori | * clock_step_next:
|
328 | 49ee3590 | Anthony Liguori | *
|
329 | 49ee3590 | Anthony Liguori | * Advance the vm_clock to the next deadline. Return the current
|
330 | 49ee3590 | Anthony Liguori | * value of the vm_clock in nanoseconds.
|
331 | 49ee3590 | Anthony Liguori | */
|
332 | 49ee3590 | Anthony Liguori | #define clock_step_next() qtest_clock_step_next(global_qtest)
|
333 | 49ee3590 | Anthony Liguori | |
334 | 49ee3590 | Anthony Liguori | /**
|
335 | 49ee3590 | Anthony Liguori | * clock_step:
|
336 | 49ee3590 | Anthony Liguori | * @step: Number of nanoseconds to advance the clock by.
|
337 | 49ee3590 | Anthony Liguori | *
|
338 | 49ee3590 | Anthony Liguori | * Advance the vm_clock by @step nanoseconds. Return the current
|
339 | 49ee3590 | Anthony Liguori | * value of the vm_clock in nanoseconds.
|
340 | 49ee3590 | Anthony Liguori | */
|
341 | 49ee3590 | Anthony Liguori | #define clock_step(step) qtest_clock_step(global_qtest, step)
|
342 | 49ee3590 | Anthony Liguori | |
343 | 49ee3590 | Anthony Liguori | /**
|
344 | 49ee3590 | Anthony Liguori | * clock_set:
|
345 | 49ee3590 | Anthony Liguori | * @val: Nanoseconds value to advance the clock to.
|
346 | 49ee3590 | Anthony Liguori | *
|
347 | 49ee3590 | Anthony Liguori | * Advance the vm_clock to @val nanoseconds since the VM was launched.
|
348 | 49ee3590 | Anthony Liguori | * Return the current value of the vm_clock in nanoseconds.
|
349 | 49ee3590 | Anthony Liguori | */
|
350 | 49ee3590 | Anthony Liguori | #define clock_set(val) qtest_clock_set(global_qtest, val)
|
351 | 49ee3590 | Anthony Liguori | |
352 | 49ee3590 | Anthony Liguori | #endif |