--- winsup/cygwin/include/aio.h | 78 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 winsup/cygwin/include/aio.h
diff --git a/winsup/cygwin/include/aio.h b/winsup/cygwin/include/aio.h new file mode 100644 index 000000000..d6ca56517 --- /dev/null +++ b/winsup/cygwin/include/aio.h @@ -0,0 +1,78 @@ +/* aio.h: Support for Posix asynchronous i/o routines. + +This file is part of Cygwin. + +This software is a copyrighted work licensed under the terms of the +Cygwin license. Please consult the file "CYGWIN_LICENSE" for +details. */ + +#ifndef _AIO_H +#define _AIO_H + +#include <sys/features.h> +#include <sys/signal.h> +#include <sys/types.h> +#include <limits.h> // for AIO_LISTIO_MAX, AIO_MAX, and AIO_PRIO_DELTA_MAX + +/* defines for return value of aio_cancel() */ +#define AIO_ALLDONE 0 +#define AIO_CANCELED 1 +#define AIO_NOTCANCELED 2 + +/* defines for 'mode' argument of lio_listio() */ +#define LIO_NOWAIT 0 +#define LIO_WAIT 1 + +/* defines for 'aio_lio_opcode' element of struct aiocb */ +#define LIO_NOP 0 +#define LIO_READ 1 +#define LIO_WRITE 2 + +#ifdef __cplusplus +#define restrict /* meaningless in C++ */ +extern "C" { +#endif + +/* struct liocb is Cygwin-specific */ +struct liocb { + volatile int lio_count; + struct sigevent *lio_sigevent; +}; + +/* struct aiocb is defined by Posix */ +struct aiocb { + /* these elements of aiocb are Cygwin-specific */ + struct aiocb *aio_prev; + struct aiocb *aio_next; + struct liocb *aio_liocb; + ssize_t aio_rbytes; + int aio_errno; + /* the remaining elements of aiocb are defined by Posix */ + int aio_lio_opcode; + int aio_reqprio; + int aio_fildes; + volatile void *aio_buf; + size_t aio_nbytes; + off_t aio_offset; + struct sigevent aio_sigevent; +}; + +/* function prototypes as defined by Posix */ +int aio_cancel (int, struct aiocb *); +int aio_error (const struct aiocb *); +#ifdef _POSIX_SYNCHRONIZED_IO +int aio_fsync (int, struct aiocb *); +#endif +int aio_read (struct aiocb *); +ssize_t aio_return (struct aiocb *); +int aio_suspend (const struct aiocb *const [], int, + const struct timespec *); +int aio_write (struct aiocb *); +int lio_listio (int, struct aiocb *restrict const [restrict], int, + struct sigevent *restrict); + +#ifdef __cplusplus +} +#undef restrict +#endif +#endif /* _AIO_H */ -- 2.16.2