19fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann#ifndef _AIO_H
29fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann#define _AIO_H
39fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann
49fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann#include <time.h>
59fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann#include <signal.h>
69fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann#include <linux/aio_abi.h>
79fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann#include <sys/cdefs.h>
89fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann#include <sys/types.h>
99fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann
109fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann__BEGIN_DECLS
119fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann
129fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmannstruct aiocb {
139fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann	int aio_fildes;
149fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann	off_t aio_offset;
159fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann	volatile void *aio_buf;
169fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann	size_t aio_nbytes;
179fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann	int aio_reqprio;
189fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann	struct sigevent aio_sigevent;
199fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann	int aio_lio_opcode;
209fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann};
219fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann
229fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmannenum {
239fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann    AIO_ALLDONE,
249fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann    AIO_CANCELED,
259fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann    AIO_NOTCANCELED,
269fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann};
279fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann
289fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmannenum {
299fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann    LIO_WAIT,
309fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann    LIO_NOWAIT,
319fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann};
329fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann
339fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmannenum {
349fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann    LIO_NOP,
359fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann    LIO_READ,
369fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann    LIO_WRITE,
379fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann};
389fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann
399fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmannint aio_read(struct aiocb *);
409fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmannint aio_write(struct aiocb *);
419fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmannint aio_fsync(int, struct aiocb *);
429fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmannint aio_error(const struct aiocb *);
439fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmannssize_t aio_return(struct aiocb *);
449fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmannint aio_suspend(const struct aiocb * const[], int, const struct timespec *);
459fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmannint aio_cancel(int, struct aiocb *);
469fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmannint lio_listio(int, struct aiocb *restrict const[restrict], int,
479fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann        struct sigevent *restrict);
489fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann
499fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann__END_DECLS
509fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann
519fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann#endif
529fa36755757e7347cecd7257c426b85b09bedb6eGreg Hackmann
53