.TH  aio_init 3 2002-09-12 "Linux 2.4" Linux AIO"
.SH NAME
aio_init \-  How to optimize the AIO implementation
.SH SYNOPSYS
.nf
.B #include <errno.h>
.sp
.br 
.B #include <aio.h>
.sp
.br
.BI "void aio_init (const struct aioinit *init)"
.fi
.SH DESCRIPTION

The POSIX standard does not specify how the AIO functions are
implemented.  They could be system calls, but it is also possible to
emulate them at userlevel.

At the point of this writing, the available implementation is a userlevel
implementation which uses threads for handling the enqueued requests.
While this implementation requires making some decisions about
limitations, hard limitations are something which is best avoided
in the GNU C library.  Therefore, the GNU C library provides a means
for tuning the AIO implementation according to the individual use.

.BI "struct aioinit"
.PP
This data type is used to pass the configuration or tunable parameters
to the implementation.  The program has to initialize the members of
this struct and pass it to the implementation using the 
.IR aio_init
function.
.TP
.B "int aio_threads"
This member specifies the maximal number of threads which may be used
at any one time.
.TP
.B "int aio_num"
This number provides an estimate on the maximal number of simultaneously
enqueued requests.
.TP
.B "int aio_locks"
Unused.
.TP
.B "int aio_usedba"
Unused.
.TP
.B "int aio_debug"
Unused.
.TP
.B "int aio_numusers"
Unused.
.TP
.B "int aio_reserved[2]"
Unused.
.PP
This function must be called before any other AIO function.  Calling it
is completely voluntary, as it is only meant to help the AIO
implementation perform better.

Before calling the 
.IR aio_init
, function the members of a variable of
type 
.IR "struct aioinit"
must be initialized.  Then a reference to
this variable is passed as the parameter to 
.IR aio_init
which itself
may or may not pay attention to the hints.

It is a extension which follows a proposal from the SGI implementation in
.IR Irix 6
.  It is not covered by POSIX.1b or Unix98.
.SH "RETURN VALUES"
The function has no return value.
.SH ERRORS
The function has no error cases defined.
.SH "SEE ALSO"
.BR aio(3),
.BR aio_cancel(3),
.BR aio_cancel64(3),
.BR aio_error(3),
.BR aio_error64(3),
.BR aio_fsync(3),
.BR aio_fsync64(3),
.BR aio_read(3),
.BR aio_read64(3),
.BR aio_return(3),
.BR aio_return64(3),
.BR aio_suspend(3),
.BR aio_suspend64(3),
.BR aio_write(3),
.BR aio_write64(3),
.BR errno(3),
