00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef QEMU_POSIX_AIO_COMPAT_H
00015 #define QEMU_POSIX_AIO_COMPAT_H
00016
00017 #include <sys/types.h>
00018 #include <unistd.h>
00019 #include <signal.h>
00020
00021 #include "sys-queue.h"
00022
00023 #define QEMU_PAIO_CANCELED 0x01
00024 #define QEMU_PAIO_NOTCANCELED 0x02
00025 #define QEMU_PAIO_ALLDONE 0x03
00026
00027 struct qemu_paiocb
00028 {
00029 int aio_fildes;
00030 void *aio_buf;
00031 size_t aio_nbytes;
00032 int ev_signo;
00033 off_t aio_offset;
00034
00035
00036 TAILQ_ENTRY(qemu_paiocb) node;
00037 int is_write;
00038 ssize_t ret;
00039 int active;
00040 };
00041
00042 struct qemu_paioinit
00043 {
00044 unsigned int aio_threads;
00045 unsigned int aio_num;
00046 unsigned int aio_idle_time;
00047 };
00048
00049 int qemu_paio_init(struct qemu_paioinit *aioinit);
00050 int qemu_paio_read(struct qemu_paiocb *aiocb);
00051 int qemu_paio_write(struct qemu_paiocb *aiocb);
00052 int qemu_paio_error(struct qemu_paiocb *aiocb);
00053 ssize_t qemu_paio_return(struct qemu_paiocb *aiocb);
00054 int qemu_paio_cancel(int fd, struct qemu_paiocb *aiocb);
00055
00056 #endif