Statistics
| Branch: | Revision:

root / posix-aio-compat.h @ 97aff481

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