/* * 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 { enum aio_type type; int fd; void *data; int len; unsigned long long offset; int reply_fd; struct aio_context *next; }; #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 } #define INIT_AIO_CONTEXT { .reply_fd = -1, \ .next = NULL } extern int submit_aio(struct aio_context *aio); #endif