xref: /qemu/tests/qtest/libqos/libqos.h (revision 0472b2e541971d162a9bbca7541c8f9299e9d78f)
12a6a4076SMarkus Armbruster #ifndef LIBQOS_H
22a6a4076SMarkus Armbruster #define LIBQOS_H
3dd0029c0SJohn Snow 
4907b5105SMarc-André Lureau #include "../libqtest.h"
5a2ce7dbdSPaolo Bonzini #include "pci.h"
6b243c73cSXuzhou Cheng #include "libqos-malloc.h"
7dd0029c0SJohn Snow 
861ae5cf3SLaurent Vivier typedef struct QOSState QOSState;
961ae5cf3SLaurent Vivier 
1090e5add6SJohn Snow typedef struct QOSOps {
11eb5937baSPaolo Bonzini     void (*alloc_init)(QGuestAllocator *, QTestState *, QAllocOpts);
12143e6db6SEmanuele Giuseppe Esposito     QPCIBus *(*qpci_new)(QTestState *qts, QGuestAllocator *alloc);
132ecd7e2fSLaurent Vivier     void (*qpci_free)(QPCIBus *bus);
1461ae5cf3SLaurent Vivier     void (*shutdown)(QOSState *);
1590e5add6SJohn Snow } QOSOps;
1690e5add6SJohn Snow 
1761ae5cf3SLaurent Vivier struct QOSState {
18dd0029c0SJohn Snow     QTestState *qts;
19eb5937baSPaolo Bonzini     QGuestAllocator alloc;
202ecd7e2fSLaurent Vivier     QPCIBus *pcibus;
2190e5add6SJohn Snow     QOSOps *ops;
2261ae5cf3SLaurent Vivier };
23dd0029c0SJohn Snow 
24*0472b2e5SDaniel P. Berrangé QOSState *qtest_vboot(QOSOps *ops, const char *cmdline_fmt, va_list ap)
25*0472b2e5SDaniel P. Berrangé     G_GNUC_PRINTF(2, 0);
26*0472b2e5SDaniel P. Berrangé QOSState *qtest_boot(QOSOps *ops, const char *cmdline_fmt, ...)
27*0472b2e5SDaniel P. Berrangé     G_GNUC_PRINTF(2, 3);
2861ae5cf3SLaurent Vivier void qtest_common_shutdown(QOSState *qs);
29dd0029c0SJohn Snow void qtest_shutdown(QOSState *qs);
30cb11e7b2SJohn Snow bool have_qemu_img(void);
31122fdf2dSJohn Snow void mkimg(const char *file, const char *fmt, unsigned size_mb);
32122fdf2dSJohn Snow void mkqcow2(const char *file, unsigned size_mb);
33085248aeSJohn Snow void migrate(QOSState *from, QOSState *to, const char *uri);
3472c85e94SJohn Snow void prepare_blkdebug_script(const char *debug_fn, const char *event);
35ab4f7057SJohn Snow void generate_pattern(void *buffer, size_t len, size_t cycle_len);
36dd0029c0SJohn Snow 
37dd0029c0SJohn Snow static inline uint64_t qmalloc(QOSState *q, size_t bytes)
38dd0029c0SJohn Snow {
39eb5937baSPaolo Bonzini     return guest_alloc(&q->alloc, bytes);
40dd0029c0SJohn Snow }
41dd0029c0SJohn Snow 
42dd0029c0SJohn Snow static inline void qfree(QOSState *q, uint64_t addr)
43dd0029c0SJohn Snow {
44eb5937baSPaolo Bonzini     guest_free(&q->alloc, addr);
45dd0029c0SJohn Snow }
46dd0029c0SJohn Snow 
47dd0029c0SJohn Snow #endif
48