Statistics
| Branch: | Revision:

root / posix-aio-compat.h @ f3e3aa8c

History | View | Annotate | Download (1.4 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 3c529d93 aliguori
    void *aio_buf;
31 3c529d93 aliguori
    size_t aio_nbytes;
32 221f715d aliguori
#define aio_ioctl_cmd   aio_nbytes /* for QEMU_PAIO_IOCTL */
33 55f11ca3 blueswir1
    int ev_signo;
34 3c529d93 aliguori
    off_t aio_offset;
35 3c529d93 aliguori
36 3c529d93 aliguori
    /* private */
37 3c529d93 aliguori
    TAILQ_ENTRY(qemu_paiocb) node;
38 221f715d aliguori
    int aio_type;
39 221f715d aliguori
#define QEMU_PAIO_READ         0x01
40 221f715d aliguori
#define QEMU_PAIO_WRITE        0x02
41 221f715d aliguori
#define QEMU_PAIO_IOCTL        0x03
42 3c529d93 aliguori
    ssize_t ret;
43 3c529d93 aliguori
    int active;
44 3c529d93 aliguori
};
45 3c529d93 aliguori
46 3c529d93 aliguori
struct qemu_paioinit
47 3c529d93 aliguori
{
48 3c529d93 aliguori
    unsigned int aio_threads;
49 3c529d93 aliguori
    unsigned int aio_num;
50 3c529d93 aliguori
    unsigned int aio_idle_time;
51 3c529d93 aliguori
};
52 3c529d93 aliguori
53 3c529d93 aliguori
int qemu_paio_init(struct qemu_paioinit *aioinit);
54 3c529d93 aliguori
int qemu_paio_read(struct qemu_paiocb *aiocb);
55 3c529d93 aliguori
int qemu_paio_write(struct qemu_paiocb *aiocb);
56 221f715d aliguori
int qemu_paio_ioctl(struct qemu_paiocb *aiocb);
57 3c529d93 aliguori
int qemu_paio_error(struct qemu_paiocb *aiocb);
58 3c529d93 aliguori
ssize_t qemu_paio_return(struct qemu_paiocb *aiocb);
59 3c529d93 aliguori
int qemu_paio_cancel(int fd, struct qemu_paiocb *aiocb);
60 3c529d93 aliguori
61 3c529d93 aliguori
#endif