summaryrefslogtreecommitdiffstats
path: root/man3/aio_suspend.3
diff options
context:
space:
mode:
Diffstat (limited to 'man3/aio_suspend.3')
-rw-r--r--man3/aio_suspend.3144
1 files changed, 144 insertions, 0 deletions
diff --git a/man3/aio_suspend.3 b/man3/aio_suspend.3
new file mode 100644
index 0000000..b532568
--- /dev/null
+++ b/man3/aio_suspend.3
@@ -0,0 +1,144 @@
+'\" t
+.\" Copyright (c) 2003 Andries Brouwer (aeb@cwi.nl)
+.\" and Copyright (C) 2010 Michael Kerrisk <mtk.manpages@gmail.com>
+.\"
+.\" SPDX-License-Identifier: GPL-2.0-or-later
+.\"
+.TH aio_suspend 3 2023-07-20 "Linux man-pages 6.05.01"
+.SH NAME
+aio_suspend \- wait for asynchronous I/O operation or timeout
+.SH LIBRARY
+Real-time library
+.RI ( librt ", " \-lrt )
+.SH SYNOPSIS
+.nf
+.PP
+.B "#include <aio.h>"
+.PP
+.BI "int aio_suspend(const struct aiocb *const " aiocb_list "[], int " nitems ,
+.BI " const struct timespec *restrict " timeout );
+.fi
+.SH DESCRIPTION
+The
+.BR aio_suspend ()
+function suspends the calling thread until one of the following occurs:
+.IP \[bu] 3
+One or more of the asynchronous I/O requests in the list
+.I aiocb_list
+has completed.
+.IP \[bu]
+A signal is delivered.
+.IP \[bu]
+.I timeout
+is not NULL and the specified time interval has passed.
+(For details of the
+.I timespec
+structure, see
+.BR nanosleep (2).)
+.PP
+The
+.I nitems
+argument specifies the number of items in
+.IR aiocb_list .
+Each item in the list pointed to by
+.I aiocb_list
+must be either NULL (and then is ignored),
+or a pointer to a control block on which I/O was initiated using
+.BR aio_read (3),
+.BR aio_write (3),
+or
+.BR lio_listio (3).
+(See
+.BR aio (7)
+for a description of the
+.I aiocb
+structure.)
+.PP
+If
+.B CLOCK_MONOTONIC
+is supported, this clock is used to measure
+the timeout interval (see
+.BR clock_gettime (2)).
+.SH RETURN VALUE
+If this function returns after completion of one of the I/O
+requests specified in
+.IR aiocb_list ,
+0 is returned.
+Otherwise, \-1 is returned, and
+.I errno
+is set to indicate the error.
+.SH ERRORS
+.TP
+.B EAGAIN
+The call timed out before any of the indicated operations
+had completed.
+.TP
+.B EINTR
+The call was ended by signal
+(possibly the completion signal of one of the operations we were
+waiting for); see
+.BR signal (7).
+.TP
+.B ENOSYS
+.BR aio_suspend ()
+is not implemented.
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lbx lb lb
+l l l.
+Interface Attribute Value
+T{
+.na
+.nh
+.BR aio_suspend ()
+T} Thread safety MT-Safe
+.TE
+.sp 1
+.SH STANDARDS
+POSIX.1-2008.
+.SH HISTORY
+glibc 2.1.
+POSIX.1-2001.
+.PP
+POSIX doesn't specify the parameters to be
+.IR restrict ;
+that is specific to glibc.
+.SH NOTES
+One can achieve polling by using a non-NULL
+.I timeout
+that specifies a zero time interval.
+.PP
+If one or more of the asynchronous I/O operations specified in
+.I aiocb_list
+has already completed at the time of the call to
+.BR aio_suspend (),
+then the call returns immediately.
+.PP
+To determine which I/O operations have completed
+after a successful return from
+.BR aio_suspend (),
+use
+.BR aio_error (3)
+to scan the list of
+.I aiocb
+structures pointed to by
+.IR aiocb_list .
+.SH BUGS
+The glibc implementation of
+.BR aio_suspend ()
+is not async-signal-safe,
+.\" FIXME . https://sourceware.org/bugzilla/show_bug.cgi?id=13172
+in violation of the requirements of POSIX.1.
+.SH SEE ALSO
+.BR aio_cancel (3),
+.BR aio_error (3),
+.BR aio_fsync (3),
+.BR aio_read (3),
+.BR aio_return (3),
+.BR aio_write (3),
+.BR lio_listio (3),
+.BR aio (7),
+.BR time (7)