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