xref: /qemu/tests/qtest/libqos/libqos.h (revision 25919c4025313763c3c00035f439bd11579c2c38)
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