Statistics
| Branch: | Revision:

root / block / raw-posix-aio.h @ 3d1807ac

History | View | Annotate | Download (1.5 kB)

1 9ef91a67 Christoph Hellwig
/*
2 9ef91a67 Christoph Hellwig
 * QEMU Posix block I/O backend AIO support
3 9ef91a67 Christoph Hellwig
 *
4 9ef91a67 Christoph Hellwig
 * Copyright IBM, Corp. 2008
5 9ef91a67 Christoph Hellwig
 *
6 9ef91a67 Christoph Hellwig
 * Authors:
7 9ef91a67 Christoph Hellwig
 *  Anthony Liguori   <aliguori@us.ibm.com>
8 9ef91a67 Christoph Hellwig
 *
9 9ef91a67 Christoph Hellwig
 * This work is licensed under the terms of the GNU GPL, version 2.  See
10 9ef91a67 Christoph Hellwig
 * the COPYING file in the top-level directory.
11 9ef91a67 Christoph Hellwig
 *
12 6b620ca3 Paolo Bonzini
 * Contributions after 2012-01-13 are licensed under the terms of the
13 6b620ca3 Paolo Bonzini
 * GNU GPL, version 2 or (at your option) any later version.
14 9ef91a67 Christoph Hellwig
 */
15 9ef91a67 Christoph Hellwig
#ifndef QEMU_RAW_POSIX_AIO_H
16 9ef91a67 Christoph Hellwig
#define QEMU_RAW_POSIX_AIO_H
17 9ef91a67 Christoph Hellwig
18 9ef91a67 Christoph Hellwig
/* AIO request types */
19 9ef91a67 Christoph Hellwig
#define QEMU_AIO_READ         0x0001
20 9ef91a67 Christoph Hellwig
#define QEMU_AIO_WRITE        0x0002
21 9ef91a67 Christoph Hellwig
#define QEMU_AIO_IOCTL        0x0004
22 b2e12bc6 Christoph Hellwig
#define QEMU_AIO_FLUSH        0x0008
23 9ef91a67 Christoph Hellwig
#define QEMU_AIO_TYPE_MASK \
24 b2e12bc6 Christoph Hellwig
        (QEMU_AIO_READ|QEMU_AIO_WRITE|QEMU_AIO_IOCTL|QEMU_AIO_FLUSH)
25 9ef91a67 Christoph Hellwig
26 9ef91a67 Christoph Hellwig
/* AIO flags */
27 9ef91a67 Christoph Hellwig
#define QEMU_AIO_MISALIGNED   0x1000
28 9ef91a67 Christoph Hellwig
29 9ef91a67 Christoph Hellwig
30 9ef91a67 Christoph Hellwig
/* posix-aio-compat.c - thread pool based implementation */
31 1e5b9d2f Kevin Wolf
int paio_init(void);
32 1e5b9d2f Kevin Wolf
BlockDriverAIOCB *paio_submit(BlockDriverState *bs, int fd,
33 9ef91a67 Christoph Hellwig
        int64_t sector_num, QEMUIOVector *qiov, int nb_sectors,
34 9ef91a67 Christoph Hellwig
        BlockDriverCompletionFunc *cb, void *opaque, int type);
35 9ef91a67 Christoph Hellwig
BlockDriverAIOCB *paio_ioctl(BlockDriverState *bs, int fd,
36 9ef91a67 Christoph Hellwig
        unsigned long int req, void *buf,
37 9ef91a67 Christoph Hellwig
        BlockDriverCompletionFunc *cb, void *opaque);
38 9ef91a67 Christoph Hellwig
39 5c6c3a6c Christoph Hellwig
/* linux-aio.c - Linux native implementation */
40 5c6c3a6c Christoph Hellwig
void *laio_init(void);
41 5c6c3a6c Christoph Hellwig
BlockDriverAIOCB *laio_submit(BlockDriverState *bs, void *aio_ctx, int fd,
42 5c6c3a6c Christoph Hellwig
        int64_t sector_num, QEMUIOVector *qiov, int nb_sectors,
43 5c6c3a6c Christoph Hellwig
        BlockDriverCompletionFunc *cb, void *opaque, int type);
44 5c6c3a6c Christoph Hellwig
45 9ef91a67 Christoph Hellwig
#endif /* QEMU_RAW_POSIX_AIO_H */