summaryrefslogtreecommitdiffstats
path: root/man3/aio_init.3
diff options
context:
space:
mode:
Diffstat (limited to 'man3/aio_init.3')
-rw-r--r--man3/aio_init.378
1 files changed, 78 insertions, 0 deletions
diff --git a/man3/aio_init.3 b/man3/aio_init.3
new file mode 100644
index 0000000..4b97839
--- /dev/null
+++ b/man3/aio_init.3
@@ -0,0 +1,78 @@
+.\" Copyright (c) 2010 by Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: Linux-man-pages-copyleft
+.\"
+.TH aio_init 3 2023-03-30 "Linux man-pages 6.05.01"
+.SH NAME
+aio_init \- asynchronous I/O initialization
+.SH LIBRARY
+Real-time library
+.RI ( librt ", " \-lrt )
+.SH SYNOPSIS
+.nf
+.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
+.B "#include <aio.h>"
+.PP
+.BI "void aio_init(const struct aioinit *" init );
+.fi
+.SH DESCRIPTION
+The GNU-specific
+.BR aio_init ()
+function allows the caller to provide tuning hints to the
+glibc POSIX AIO implementation.
+Use of this function is optional, but to be effective,
+it must be called before employing any other functions in the POSIX AIO API.
+.PP
+The tuning information is provided in the buffer pointed to by the argument
+.IR init .
+This buffer is a structure of the following form:
+.PP
+.in +4n
+.EX
+struct aioinit {
+ int aio_threads; /* Maximum number of threads */
+ int aio_num; /* Number of expected simultaneous
+ requests */
+ int aio_locks; /* Not used */
+ int aio_usedba; /* Not used */
+ int aio_debug; /* Not used */
+ int aio_numusers; /* Not used */
+ int aio_idle_time; /* Number of seconds before idle thread
+ terminates (since glibc 2.2) */
+ int aio_reserved;
+};
+.EE
+.in
+.PP
+The following fields are used in the
+.I aioinit
+structure:
+.TP
+.I aio_threads
+This field specifies the maximum number of worker threads that
+may be used by the implementation.
+If the number of outstanding I/O operations exceeds this limit,
+then excess operations will be queued until a worker thread becomes free.
+If this field is specified with a value less than 1, the value 1 is used.
+The default value is 20.
+.TP
+.I aio_num
+This field should specify the maximum number of simultaneous I/O requests
+that the caller expects to enqueue.
+If a value less than 32 is specified for this field,
+it is rounded up to 32.
+.\" FIXME . But, if aio_num > 32, the behavior looks strange. See
+.\" http://sourceware.org/bugzilla/show_bug.cgi?id=12083
+The default value is 64.
+.TP
+.I aio_idle_time
+This field specifies the amount of time in seconds that a
+worker thread should wait for further requests before terminating,
+after having completed a previous request.
+The default value is 1.
+.SH STANDARDS
+GNU.
+.SH HISTORY
+glibc 2.1.
+.SH SEE ALSO
+.BR aio (7)