2005-09-04 06:57:45 +08:00
|
|
|
/*
|
|
|
|
* Copyright (C) 2004 Jeff Dike (jdike@karaya.com)
|
|
|
|
* Licensed under the GPL
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef AIO_H__
|
|
|
|
#define AIO_H__
|
|
|
|
|
|
|
|
enum aio_type { AIO_READ, AIO_WRITE, AIO_MMAP };
|
|
|
|
|
|
|
|
struct aio_thread_reply {
|
|
|
|
void *data;
|
|
|
|
int err;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct aio_context {
|
2005-09-04 06:57:46 +08:00
|
|
|
enum aio_type type;
|
|
|
|
int fd;
|
|
|
|
void *data;
|
|
|
|
int len;
|
|
|
|
unsigned long long offset;
|
2005-09-04 06:57:45 +08:00
|
|
|
int reply_fd;
|
|
|
|
struct aio_context *next;
|
|
|
|
};
|
|
|
|
|
2005-09-04 06:57:46 +08:00
|
|
|
#define INIT_AIO(aio_type, aio_fd, aio_data, aio_len, aio_offset, \
|
|
|
|
aio_reply_fd) \
|
|
|
|
{ .type = aio_type, \
|
|
|
|
.fd = aio_fd, \
|
|
|
|
.data = aio_data, \
|
|
|
|
.len = aio_len, \
|
|
|
|
.offset = aio_offset, \
|
|
|
|
.reply_fd = aio_reply_fd }
|
|
|
|
|
2005-09-04 06:57:45 +08:00
|
|
|
#define INIT_AIO_CONTEXT { .reply_fd = -1, \
|
|
|
|
.next = NULL }
|
|
|
|
|
2005-09-04 06:57:46 +08:00
|
|
|
extern int submit_aio(struct aio_context *aio);
|
2005-09-04 06:57:45 +08:00
|
|
|
|
|
|
|
#endif
|