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

raw-aio.h (3196B)


      1/*
      2 * Declarations for AIO in the raw protocol
      3 *
      4 * Copyright IBM, Corp. 2008
      5 *
      6 * Authors:
      7 *  Anthony Liguori   <aliguori@us.ibm.com>
      8 *
      9 * This work is licensed under the terms of the GNU GPL, version 2.  See
     10 * the COPYING file in the top-level directory.
     11 *
     12 * Contributions after 2012-01-13 are licensed under the terms of the
     13 * GNU GPL, version 2 or (at your option) any later version.
     14 */
     15
     16#ifndef QEMU_RAW_AIO_H
     17#define QEMU_RAW_AIO_H
     18
     19#include "block/aio.h"
     20#include "qemu/coroutine.h"
     21#include "qemu/iov.h"
     22
     23/* AIO request types */
     24#define QEMU_AIO_READ         0x0001
     25#define QEMU_AIO_WRITE        0x0002
     26#define QEMU_AIO_IOCTL        0x0004
     27#define QEMU_AIO_FLUSH        0x0008
     28#define QEMU_AIO_DISCARD      0x0010
     29#define QEMU_AIO_WRITE_ZEROES 0x0020
     30#define QEMU_AIO_COPY_RANGE   0x0040
     31#define QEMU_AIO_TRUNCATE     0x0080
     32#define QEMU_AIO_TYPE_MASK \
     33        (QEMU_AIO_READ | \
     34         QEMU_AIO_WRITE | \
     35         QEMU_AIO_IOCTL | \
     36         QEMU_AIO_FLUSH | \
     37         QEMU_AIO_DISCARD | \
     38         QEMU_AIO_WRITE_ZEROES | \
     39         QEMU_AIO_COPY_RANGE | \
     40         QEMU_AIO_TRUNCATE)
     41
     42/* AIO flags */
     43#define QEMU_AIO_MISALIGNED   0x1000
     44#define QEMU_AIO_BLKDEV       0x2000
     45#define QEMU_AIO_NO_FALLBACK  0x4000
     46
     47
     48/* linux-aio.c - Linux native implementation */
     49#ifdef CONFIG_LINUX_AIO
     50typedef struct LinuxAioState LinuxAioState;
     51LinuxAioState *laio_init(Error **errp);
     52void laio_cleanup(LinuxAioState *s);
     53int coroutine_fn laio_co_submit(BlockDriverState *bs, LinuxAioState *s, int fd,
     54                                uint64_t offset, QEMUIOVector *qiov, int type);
     55void laio_detach_aio_context(LinuxAioState *s, AioContext *old_context);
     56void laio_attach_aio_context(LinuxAioState *s, AioContext *new_context);
     57void laio_io_plug(BlockDriverState *bs, LinuxAioState *s);
     58void laio_io_unplug(BlockDriverState *bs, LinuxAioState *s);
     59#endif
     60/* io_uring.c - Linux io_uring implementation */
     61#ifdef CONFIG_LINUX_IO_URING
     62typedef struct LuringState LuringState;
     63LuringState *luring_init(Error **errp);
     64void luring_cleanup(LuringState *s);
     65int coroutine_fn luring_co_submit(BlockDriverState *bs, LuringState *s, int fd,
     66                                uint64_t offset, QEMUIOVector *qiov, int type);
     67void luring_detach_aio_context(LuringState *s, AioContext *old_context);
     68void luring_attach_aio_context(LuringState *s, AioContext *new_context);
     69void luring_io_plug(BlockDriverState *bs, LuringState *s);
     70void luring_io_unplug(BlockDriverState *bs, LuringState *s);
     71#endif
     72
     73#ifdef _WIN32
     74typedef struct QEMUWin32AIOState QEMUWin32AIOState;
     75QEMUWin32AIOState *win32_aio_init(void);
     76void win32_aio_cleanup(QEMUWin32AIOState *aio);
     77int win32_aio_attach(QEMUWin32AIOState *aio, HANDLE hfile);
     78BlockAIOCB *win32_aio_submit(BlockDriverState *bs,
     79        QEMUWin32AIOState *aio, HANDLE hfile,
     80        uint64_t offset, uint64_t bytes, QEMUIOVector *qiov,
     81        BlockCompletionFunc *cb, void *opaque, int type);
     82void win32_aio_detach_aio_context(QEMUWin32AIOState *aio,
     83                                  AioContext *old_context);
     84void win32_aio_attach_aio_context(QEMUWin32AIOState *aio,
     85                                  AioContext *new_context);
     86#endif
     87
     88#endif /* QEMU_RAW_AIO_H */