Statistics
| Branch: | Revision:

root / block / raw-aio.h @ cc84d90f

History | View | Annotate | Download (1.6 kB)

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
#ifndef QEMU_RAW_AIO_H
16
#define QEMU_RAW_AIO_H
17

    
18
/* AIO request types */
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_DISCARD      0x0010
24
#define QEMU_AIO_TYPE_MASK \
25
        (QEMU_AIO_READ|QEMU_AIO_WRITE|QEMU_AIO_IOCTL|QEMU_AIO_FLUSH| \
26
         QEMU_AIO_DISCARD)
27

    
28
/* AIO flags */
29
#define QEMU_AIO_MISALIGNED   0x1000
30
#define QEMU_AIO_BLKDEV       0x2000
31

    
32

    
33
/* linux-aio.c - Linux native implementation */
34
#ifdef CONFIG_LINUX_AIO
35
void *laio_init(void);
36
BlockDriverAIOCB *laio_submit(BlockDriverState *bs, void *aio_ctx, int fd,
37
        int64_t sector_num, QEMUIOVector *qiov, int nb_sectors,
38
        BlockDriverCompletionFunc *cb, void *opaque, int type);
39
#endif
40

    
41
#ifdef _WIN32
42
typedef struct QEMUWin32AIOState QEMUWin32AIOState;
43
QEMUWin32AIOState *win32_aio_init(void);
44
int win32_aio_attach(QEMUWin32AIOState *aio, HANDLE hfile);
45
BlockDriverAIOCB *win32_aio_submit(BlockDriverState *bs,
46
        QEMUWin32AIOState *aio, HANDLE hfile,
47
        int64_t sector_num, QEMUIOVector *qiov, int nb_sectors,
48
        BlockDriverCompletionFunc *cb, void *opaque, int type);
49
#endif
50

    
51
#endif /* QEMU_RAW_AIO_H */