]> git.ipfire.org Git - thirdparty/man-pages.git/blame - man3/aio_suspend.3
perf_event_open.2: srcfix
[thirdparty/man-pages.git] / man3 / aio_suspend.3
CommitLineData
fea681da 1.\" Copyright (c) 2003 Andries Brouwer (aeb@cwi.nl)
31cc8387 2.\" and Copyright (C) 2010 Michael Kerrisk <mtk.manpages@gmail.com>
fea681da 3.\"
1dd72f9c 4.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
fea681da
MK
5.\" This is free documentation; you can redistribute it and/or
6.\" modify it under the terms of the GNU General Public License as
7.\" published by the Free Software Foundation; either version 2 of
8.\" the License, or (at your option) any later version.
9.\"
10.\" The GNU General Public License's references to "object code"
11.\" and "executables" are to be interpreted as the output of any
12.\" document formatting or typesetting system, including
13.\" intermediate and printed output.
14.\"
15.\" This manual is distributed in the hope that it will be useful,
16.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
17.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18.\" GNU General Public License for more details.
19.\"
20.\" You should have received a copy of the GNU General Public
c715f741
MK
21.\" License along with this manual; if not, see
22.\" <http://www.gnu.org/licenses/>.
6a8d8745 23.\" %%%LICENSE_END
fea681da 24.\"
fe0fefbf 25.TH AIO_SUSPEND 3 2015-03-02 "" "Linux Programmer's Manual"
fea681da
MK
26.SH NAME
27aio_suspend \- wait for asynchronous I/O operation or timeout
28.SH SYNOPSIS
29.nf
30.sp
31.B "#include <aio.h>"
32.sp
0cae8d0c 33.BI "int aio_suspend(const struct aiocb * const " aiocb_list [],
fea681da 34.br
0cae8d0c 35.BI " int " nitems ", const struct timespec *" timeout );
8d3d329b
MK
36.sp
37Link with \fI\-lrt\fP.
fea681da
MK
38.fi
39.SH DESCRIPTION
40The
e511ffb6 41.BR aio_suspend ()
0cae8d0c
MK
42function suspends the calling thread until one of the following occurs:
43.IP * 3
44One or more of the asynchronous I/O requests in the list
45.I aiocb_list
46has completed.
47.IP *
48A signal is delivered.
49.IP *
fea681da 50.I timeout
0cae8d0c
MK
51is not NULL and the specified time interval has passed.
52(For details of the
53.I timespec
54structure, see
55.BR nanosleep (2).)
fea681da 56.LP
0cae8d0c
MK
57The
58.I nitems
59argument specifies the number of items in
60.IR aiocb_list .
61Each item in the list pointed to by
62.I aiocb_list
63must be either NULL (and then is ignored),
fea681da
MK
64or a pointer to a control block on which I/O was initiated using
65.BR aio_read (3),
66.BR aio_write (3),
67or
68.BR lio_listio (3).
0cae8d0c
MK
69(See
70.BR aio (7)
71for a description of the
72.I aiocb
73structure.)
fea681da 74.LP
2f0af33b
MK
75If
76.B CLOCK_MONOTONIC
77is supported, this clock is used to measure
0cae8d0c
MK
78the timeout interval (see
79.BR clock_gettime (3)).
47297adb 80.SH RETURN VALUE
0cae8d0c
MK
81If this function returns after completion of one of the I/O
82requests specified in
83.IR aiocb_list ,
840 is returned.
85Otherwise, \-1 is returned, and
fea681da 86.I errno
0cae8d0c 87is set to indicate the error.
fea681da
MK
88.SH ERRORS
89.TP
90.B EAGAIN
0cae8d0c 91The call timed out before any of the indicated operations
fea681da
MK
92had completed.
93.TP
94.B EINTR
0cae8d0c
MK
95The call was ended by signal
96(possibly the completion signal of one of the operations we were
97waiting for); see
76e533c4 98.BR signal (7).
aea038d6
MK
99.TP
100.B ENOSYS
02ace852 101.BR aio_suspend ()
aea038d6 102is not implemented.
793514ae
MK
103.SH VERSIONS
104The
105.BR aio_suspend ()
106function is available since glibc 2.1.
2bddd251
MS
107.SH ATTRIBUTES
108For an explanation of the terms used in this section, see
109.BR attributes (7).
110.TS
111allbox;
112lb lb lb
113l l l.
114Interface Attribute Value
115T{
116.BR aio_suspend ()
117T} Thread safety MT-Safe
118.TE
47297adb 119.SH CONFORMING TO
793514ae 120POSIX.1-2001, POSIX.1-2008.
19c98696 121.SH NOTES
fea681da
MK
122One can achieve polling by using a non-NULL
123.I timeout
124that specifies a zero time interval.
0cae8d0c
MK
125
126If one or more of the asynchronous I/O operations specified in
127.IR aiocb_list
128has already completed at the time of the call to
129.BR aio_suspend (),
130then the call returns immediately.
131
132To determine which I/O operations have completed
133after a successful return from
134.BR aio_suspend (),
135use
136.BR aio_error (3)
137to scan the list of
138.I aiocb
139structures pointed to by
140.IR aiocb_list .
47297adb 141.SH SEE ALSO
fea681da
MK
142.BR aio_cancel (3),
143.BR aio_error (3),
144.BR aio_fsync (3),
145.BR aio_read (3),
146.BR aio_return (3),
1d7c4d16 147.BR aio_write (3),
cd587df6 148.BR lio_listio (3),
25fa6c3d 149.BR aio (7),
1d7c4d16 150.BR time (7)