83 lines
2.4 KiB
C
83 lines
2.4 KiB
C
/* 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/queue.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
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* struct __liocb is Cygwin-specific */
|
|
struct __liocb {
|
|
volatile uint32_t lio_count;
|
|
struct sigevent *lio_sigevent;
|
|
};
|
|
|
|
/* struct __wincb is Cygwin-specific */
|
|
struct __wincb {
|
|
int32_t status; /* These two fields must be first... */
|
|
uintptr_t info; /* ...and must be adjacent, in this order */
|
|
void *event;
|
|
};
|
|
|
|
/* struct aiocb is defined by Posix */
|
|
struct aiocb {
|
|
/* these elements of aiocb are Cygwin-specific */
|
|
TAILQ_ENTRY(aiocb) aio_chain;
|
|
struct __liocb *aio_liocb;
|
|
struct __wincb aio_wincb;
|
|
ssize_t aio_rbytes;
|
|
int aio_errno;
|
|
/* the remaining elements of aiocb are defined by Posix */
|
|
int aio_lio_opcode;
|
|
int aio_reqprio; /* Not yet implemented; must be zero */
|
|
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 *);
|
|
int aio_fsync (int, struct aiocb *);
|
|
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
|
|
}
|
|
#endif
|
|
#endif /* _AIO_H */
|