root / posix-aio-compat.h @ 5169202b
History | View | Annotate | Download (1.6 kB)
1 | 3c529d93 | aliguori | /*
|
---|---|---|---|
2 | 3c529d93 | aliguori | * QEMU posix-aio emulation
|
3 | 3c529d93 | aliguori | *
|
4 | 3c529d93 | aliguori | * Copyright IBM, Corp. 2008
|
5 | 3c529d93 | aliguori | *
|
6 | 3c529d93 | aliguori | * Authors:
|
7 | 3c529d93 | aliguori | * Anthony Liguori <aliguori@us.ibm.com>
|
8 | 3c529d93 | aliguori | *
|
9 | 3c529d93 | aliguori | * This work is licensed under the terms of the GNU GPL, version 2. See
|
10 | 3c529d93 | aliguori | * the COPYING file in the top-level directory.
|
11 | 3c529d93 | aliguori | *
|
12 | 3c529d93 | aliguori | */
|
13 | 3c529d93 | aliguori | |
14 | 3c529d93 | aliguori | #ifndef QEMU_POSIX_AIO_COMPAT_H
|
15 | 3c529d93 | aliguori | #define QEMU_POSIX_AIO_COMPAT_H
|
16 | 3c529d93 | aliguori | |
17 | 3c529d93 | aliguori | #include <sys/types.h> |
18 | 3c529d93 | aliguori | #include <unistd.h> |
19 | 3c529d93 | aliguori | #include <signal.h> |
20 | 3c529d93 | aliguori | |
21 | 3c529d93 | aliguori | #include "sys-queue.h" |
22 | 3c529d93 | aliguori | |
23 | 3c529d93 | aliguori | #define QEMU_PAIO_CANCELED 0x01 |
24 | 3c529d93 | aliguori | #define QEMU_PAIO_NOTCANCELED 0x02 |
25 | 3c529d93 | aliguori | #define QEMU_PAIO_ALLDONE 0x03 |
26 | 3c529d93 | aliguori | |
27 | 3c529d93 | aliguori | struct qemu_paiocb
|
28 | 3c529d93 | aliguori | { |
29 | 3c529d93 | aliguori | int aio_fildes;
|
30 | f141eafe | aliguori | union {
|
31 | f141eafe | aliguori | struct iovec *aio_iov;
|
32 | f141eafe | aliguori | void *aio_ioctl_buf;
|
33 | f141eafe | aliguori | }; |
34 | f141eafe | aliguori | int aio_niov;
|
35 | 3c529d93 | aliguori | size_t aio_nbytes; |
36 | 221f715d | aliguori | #define aio_ioctl_cmd aio_nbytes /* for QEMU_PAIO_IOCTL */ |
37 | 55f11ca3 | blueswir1 | int ev_signo;
|
38 | 3c529d93 | aliguori | off_t aio_offset; |
39 | f141eafe | aliguori | unsigned aio_flags;
|
40 | f141eafe | aliguori | /* 512 byte alignment required for buffer, offset and length */
|
41 | f141eafe | aliguori | #define QEMU_AIO_SECTOR_ALIGNED 0x01 |
42 | 3c529d93 | aliguori | |
43 | 3c529d93 | aliguori | /* private */
|
44 | 3c529d93 | aliguori | TAILQ_ENTRY(qemu_paiocb) node; |
45 | 221f715d | aliguori | int aio_type;
|
46 | 221f715d | aliguori | #define QEMU_PAIO_READ 0x01 |
47 | 221f715d | aliguori | #define QEMU_PAIO_WRITE 0x02 |
48 | 221f715d | aliguori | #define QEMU_PAIO_IOCTL 0x03 |
49 | 3c529d93 | aliguori | ssize_t ret; |
50 | 3c529d93 | aliguori | int active;
|
51 | 3c529d93 | aliguori | }; |
52 | 3c529d93 | aliguori | |
53 | 3c529d93 | aliguori | struct qemu_paioinit
|
54 | 3c529d93 | aliguori | { |
55 | 3c529d93 | aliguori | unsigned int aio_threads; |
56 | 3c529d93 | aliguori | unsigned int aio_num; |
57 | 3c529d93 | aliguori | unsigned int aio_idle_time; |
58 | 3c529d93 | aliguori | }; |
59 | 3c529d93 | aliguori | |
60 | 3c529d93 | aliguori | int qemu_paio_init(struct qemu_paioinit *aioinit); |
61 | 3c529d93 | aliguori | int qemu_paio_read(struct qemu_paiocb *aiocb); |
62 | 3c529d93 | aliguori | int qemu_paio_write(struct qemu_paiocb *aiocb); |
63 | 221f715d | aliguori | int qemu_paio_ioctl(struct qemu_paiocb *aiocb); |
64 | 3c529d93 | aliguori | int qemu_paio_error(struct qemu_paiocb *aiocb); |
65 | 3c529d93 | aliguori | ssize_t qemu_paio_return(struct qemu_paiocb *aiocb);
|
66 | 3c529d93 | aliguori | int qemu_paio_cancel(int fd, struct qemu_paiocb *aiocb); |
67 | 3c529d93 | aliguori | |
68 | 3c529d93 | aliguori | #endif |