aio_init - How to optimize the AIO implementation
void aio_init (const struct aioinit *init)
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.
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 aio_init
This member specifies the maximal number of threads which may be
used at any one time.
This number provides an estimate on the maximal number of
simultaneously enqueued requests.
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 aio_init, function the members of a variable of type
struct aioinit must be initialized. Then a reference to this variable
is passed as the parameter to 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 Irix 6. It is not covered by POSIX.1b or Unix98.
The function has no return value.
The function has no error cases defined.
aio(3), aio_cancel(3), aio_cancel64(3), aio_error(3), aio_error64(3),
aio_fsync(3), aio_fsync64(3), aio_read(3), aio_read64(3),
aio_return(3), aio_return64(3), aio_suspend(3), aio_suspend64(3),
aio_write(3), aio_write64(3), errno(3).