blob: 83f16877ab0828baf413d5e0025fe2b1965c23db [file] [log] [blame]
Jeff Dike75e55842005-09-03 15:57:45 -07001/*
2 * Copyright (C) 2004 Jeff Dike (jdike@karaya.com)
3 * Licensed under the GPL
4 */
5
6#ifndef AIO_H__
7#define AIO_H__
8
9enum aio_type { AIO_READ, AIO_WRITE, AIO_MMAP };
10
11struct aio_thread_reply {
12 void *data;
13 int err;
14};
15
16struct aio_context {
Jeff Dike09ace812005-09-03 15:57:46 -070017 enum aio_type type;
18 int fd;
19 void *data;
20 int len;
21 unsigned long long offset;
Jeff Dike75e55842005-09-03 15:57:45 -070022 int reply_fd;
23 struct aio_context *next;
24};
25
Jeff Dike09ace812005-09-03 15:57:46 -070026#define INIT_AIO(aio_type, aio_fd, aio_data, aio_len, aio_offset, \
27 aio_reply_fd) \
28 { .type = aio_type, \
29 .fd = aio_fd, \
30 .data = aio_data, \
31 .len = aio_len, \
32 .offset = aio_offset, \
33 .reply_fd = aio_reply_fd }
34
Jeff Dike75e55842005-09-03 15:57:45 -070035#define INIT_AIO_CONTEXT { .reply_fd = -1, \
36 .next = NULL }
37
Jeff Dike09ace812005-09-03 15:57:46 -070038extern int submit_aio(struct aio_context *aio);
Jeff Dike75e55842005-09-03 15:57:45 -070039
40#endif