mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 18:21:39 +01:00
97 lines
2.4 KiB
Plaintext
97 lines
2.4 KiB
Plaintext
.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),
|