Home | History | Annotate | Download | only in block
      1 /*
      2  * QEMU Posix block I/O backend AIO support
      3  *
      4  * Copyright IBM, Corp. 2008
      5  *
      6  * Authors:
      7  *  Anthony Liguori   <aliguori (at) 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  */
     13 #ifndef QEMU_RAW_POSIX_AIO_H
     14 #define QEMU_RAW_POSIX_AIO_H
     15 
     16 /* AIO request types */
     17 #define QEMU_AIO_READ         0x0001
     18 #define QEMU_AIO_WRITE        0x0002
     19 #define QEMU_AIO_IOCTL        0x0004
     20 #define QEMU_AIO_FLUSH        0x0008
     21 #define QEMU_AIO_TYPE_MASK \
     22 	(QEMU_AIO_READ|QEMU_AIO_WRITE|QEMU_AIO_IOCTL|QEMU_AIO_FLUSH)
     23 
     24 /* AIO flags */
     25 #define QEMU_AIO_MISALIGNED   0x1000
     26 
     27 
     28 /* posix-aio-compat.c - thread pool based implementation */
     29 int paio_init(void);
     30 BlockDriverAIOCB *paio_submit(BlockDriverState *bs, int fd,
     31         int64_t sector_num, QEMUIOVector *qiov, int nb_sectors,
     32         BlockDriverCompletionFunc *cb, void *opaque, int type);
     33 BlockDriverAIOCB *paio_ioctl(BlockDriverState *bs, int fd,
     34         unsigned long int req, void *buf,
     35         BlockDriverCompletionFunc *cb, void *opaque);
     36 
     37 /* linux-aio.c - Linux native implementation */
     38 void *laio_init(void);
     39 BlockDriverAIOCB *laio_submit(BlockDriverState *bs, void *aio_ctx, int fd,
     40         int64_t sector_num, QEMUIOVector *qiov, int nb_sectors,
     41         BlockDriverCompletionFunc *cb, void *opaque, int type);
     42 
     43 #endif /* QEMU_RAW_POSIX_AIO_H */
     44