12a6a4076SMarkus Armbruster #ifndef LIBQOS_H 22a6a4076SMarkus Armbruster #define LIBQOS_H 3dd0029c0SJohn Snow 4dd0029c0SJohn Snow #include "libqtest.h" 5dd0029c0SJohn Snow #include "libqos/pci.h" 6*eb5937baSPaolo Bonzini #include "libqos/malloc.h" 7dd0029c0SJohn Snow 861ae5cf3SLaurent Vivier typedef struct QOSState QOSState; 961ae5cf3SLaurent Vivier 1090e5add6SJohn Snow typedef struct QOSOps { 11*eb5937baSPaolo 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; 19*eb5937baSPaolo Bonzini QGuestAllocator alloc; 202ecd7e2fSLaurent Vivier QPCIBus *pcibus; 2190e5add6SJohn Snow QOSOps *ops; 2261ae5cf3SLaurent Vivier }; 23dd0029c0SJohn Snow 2490e5add6SJohn Snow QOSState *qtest_vboot(QOSOps *ops, const char *cmdline_fmt, va_list ap); 2590e5add6SJohn Snow QOSState *qtest_boot(QOSOps *ops, const char *cmdline_fmt, ...); 2661ae5cf3SLaurent Vivier void qtest_common_shutdown(QOSState *qs); 27dd0029c0SJohn Snow void qtest_shutdown(QOSState *qs); 28cb11e7b2SJohn Snow bool have_qemu_img(void); 29122fdf2dSJohn Snow void mkimg(const char *file, const char *fmt, unsigned size_mb); 30122fdf2dSJohn Snow void mkqcow2(const char *file, unsigned size_mb); 31085248aeSJohn Snow void set_context(QOSState *s); 32085248aeSJohn Snow void migrate(QOSState *from, QOSState *to, const char *uri); 3372c85e94SJohn Snow void prepare_blkdebug_script(const char *debug_fn, const char *event); 34ab4f7057SJohn Snow void generate_pattern(void *buffer, size_t len, size_t cycle_len); 35dd0029c0SJohn Snow 36dd0029c0SJohn Snow static inline uint64_t qmalloc(QOSState *q, size_t bytes) 37dd0029c0SJohn Snow { 38*eb5937baSPaolo Bonzini return guest_alloc(&q->alloc, bytes); 39dd0029c0SJohn Snow } 40dd0029c0SJohn Snow 41dd0029c0SJohn Snow static inline void qfree(QOSState *q, uint64_t addr) 42dd0029c0SJohn Snow { 43*eb5937baSPaolo Bonzini guest_free(&q->alloc, addr); 44dd0029c0SJohn Snow } 45dd0029c0SJohn Snow 46dd0029c0SJohn Snow #endif 47