cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

libqos.h (1239B)


      1#ifndef LIBQOS_H
      2#define LIBQOS_H
      3
      4#include "libqtest.h"
      5#include "pci.h"
      6#include "malloc.h"
      7
      8typedef struct QOSState QOSState;
      9
     10typedef struct QOSOps {
     11    void (*alloc_init)(QGuestAllocator *, QTestState *, QAllocOpts);
     12    QPCIBus *(*qpci_new)(QTestState *qts, QGuestAllocator *alloc);
     13    void (*qpci_free)(QPCIBus *bus);
     14    void (*shutdown)(QOSState *);
     15} QOSOps;
     16
     17struct QOSState {
     18    QTestState *qts;
     19    QGuestAllocator alloc;
     20    QPCIBus *pcibus;
     21    QOSOps *ops;
     22};
     23
     24QOSState *qtest_vboot(QOSOps *ops, const char *cmdline_fmt, va_list ap);
     25QOSState *qtest_boot(QOSOps *ops, const char *cmdline_fmt, ...);
     26void qtest_common_shutdown(QOSState *qs);
     27void qtest_shutdown(QOSState *qs);
     28bool have_qemu_img(void);
     29void mkimg(const char *file, const char *fmt, unsigned size_mb);
     30void mkqcow2(const char *file, unsigned size_mb);
     31void migrate(QOSState *from, QOSState *to, const char *uri);
     32void prepare_blkdebug_script(const char *debug_fn, const char *event);
     33void generate_pattern(void *buffer, size_t len, size_t cycle_len);
     34
     35static inline uint64_t qmalloc(QOSState *q, size_t bytes)
     36{
     37    return guest_alloc(&q->alloc, bytes);
     38}
     39
     40static inline void qfree(QOSState *q, uint64_t addr)
     41{
     42    guest_free(&q->alloc, addr);
     43}
     44
     45#endif