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);
30122fdf2dSJohn Snow void mkqcow2(const char *file, unsigned size_mb);
31085248aeSJohn Snow void migrate(QOSState *from, QOSState *to, const char *uri);
3272c85e94SJohn Snow void prepare_blkdebug_script(const char *debug_fn, const char *event);
33ab4f7057SJohn Snow void generate_pattern(void *buffer, size_t len, size_t cycle_len);
34dd0029c0SJohn Snow
qmalloc(QOSState * q,size_t bytes)35dd0029c0SJohn Snow static inline uint64_t qmalloc(QOSState *q, size_t bytes)
36dd0029c0SJohn Snow {
37eb5937baSPaolo Bonzini return guest_alloc(&q->alloc, bytes);
38dd0029c0SJohn Snow }
39dd0029c0SJohn Snow
qfree(QOSState * q,uint64_t addr)40dd0029c0SJohn Snow static inline void qfree(QOSState *q, uint64_t addr)
41dd0029c0SJohn Snow {
42eb5937baSPaolo Bonzini guest_free(&q->alloc, addr);
43dd0029c0SJohn Snow }
44dd0029c0SJohn Snow
45dd0029c0SJohn Snow #endif
46