David Turner | d065994 | 2010-09-10 10:42:32 +0200 | [diff] [blame] | 1 | /* |
| 2 | * QEMU Posix block I/O backend AIO support |
| 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 | */ |
| 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 */ |