1
2
3
4
5
6
7
8
9
10
11
12
13
14
15#ifndef QEMU_RAW_AIO_H
16#define QEMU_RAW_AIO_H
17
18
19#define QEMU_AIO_READ 0x0001
20#define QEMU_AIO_WRITE 0x0002
21#define QEMU_AIO_IOCTL 0x0004
22#define QEMU_AIO_FLUSH 0x0008
23#define QEMU_AIO_TYPE_MASK \
24 (QEMU_AIO_READ|QEMU_AIO_WRITE|QEMU_AIO_IOCTL|QEMU_AIO_FLUSH)
25
26
27#define QEMU_AIO_MISALIGNED 0x1000
28
29
30
31#ifdef CONFIG_LINUX_AIO
32void *laio_init(void);
33BlockDriverAIOCB *laio_submit(BlockDriverState *bs, void *aio_ctx, int fd,
34 int64_t sector_num, QEMUIOVector *qiov, int nb_sectors,
35 BlockDriverCompletionFunc *cb, void *opaque, int type);
36#endif
37
38#ifdef _WIN32
39typedef struct QEMUWin32AIOState QEMUWin32AIOState;
40QEMUWin32AIOState *win32_aio_init(void);
41int win32_aio_attach(QEMUWin32AIOState *aio, HANDLE hfile);
42BlockDriverAIOCB *win32_aio_submit(BlockDriverState *bs,
43 QEMUWin32AIOState *aio, HANDLE hfile,
44 int64_t sector_num, QEMUIOVector *qiov, int nb_sectors,
45 BlockDriverCompletionFunc *cb, void *opaque, int type);
46#endif
47
48#endif
49