1.\" Copyright (c) 1999 Christopher M Sedore. 2.\" All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 1. Redistributions of source code must retain the above copyright 8.\" notice, this list of conditions and the following disclaimer. 9.\" 2. Redistributions in binary form must reproduce the above copyright 10.\" notice, this list of conditions and the following disclaimer in the 11.\" documentation and/or other materials provided with the distribution. 12.\" 13.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND 14.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 17.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23.\" SUCH DAMAGE. 24.\" 25.\" $FreeBSD$ 26.\" 27.Dd March 21, 2016 28.Dt AIO_WAITCOMPLETE 2 29.Os 30.Sh NAME 31.Nm aio_waitcomplete 32.Nd wait for the next completion of an aio request 33.Sh LIBRARY 34.Lb libc 35.Sh SYNOPSIS 36.In aio.h 37.Ft ssize_t 38.Fn aio_waitcomplete "struct aiocb **iocbp" "struct timespec *timeout" 39.Sh DESCRIPTION 40The 41.Fn aio_waitcomplete 42system call waits for completion of an asynchronous I/O request. 43Upon completion, 44.Fn aio_waitcomplete 45returns the result of the function and sets 46.Fa iocbp 47to point to the structure associated with the original request. 48If an asynchronous I/O request is completed before 49.Fn aio_waitcomplete 50is called, it returns immediately with the completed request. 51.Pp 52If 53.Fa timeout 54is a non-NULL pointer, it specifies a maximum interval to wait for a 55asynchronous I/O request to complete. 56If 57.Fa timeout 58is a NULL pointer, 59.Fn aio_waitcomplete 60waits indefinitely. 61To effect a poll, the 62.Fa timeout 63argument should be non-NULL, pointing to a zero-valued timeval structure. 64.Pp 65The 66.Fn aio_waitcomplete 67system call also serves the function of 68.Fn aio_return , 69thus 70.Fn aio_return 71should not be called for the control block returned in 72.Fa iocbp . 73.Sh RETURN VALUES 74If an asynchronous I/O request has completed, 75.Fa iocbp 76is set to point to the control block passed with the original request, 77and the status is returned as described in 78.Xr read 2 , 79.Xr write 2 , 80or 81.Xr fsync 2 . 82On failure, 83.Fn aio_waitcomplete 84returns 85.Dv -1 , 86sets iocbp to 87.Dv NULL 88and sets 89.Va errno 90to indicate the error condition. 91.Sh ERRORS 92The 93.Fn aio_waitcomplete 94system call fails if: 95.Bl -tag -width Er 96.It Bq Er EINVAL 97The specified time limit is invalid. 98.It Bq Er EAGAIN 99The process has not yet called 100.Fn aio_read 101or 102.Fn aio_write . 103.It Bq Er EINTR 104A signal was delivered before the timeout expired and before any 105asynchronous I/O requests completed. 106.It Bq Er EWOULDBLOCK 107.It Bq Er EINPROGRESS 108The specified time limit expired before any asynchronous I/O requests 109completed. 110.El 111.Sh SEE ALSO 112.Xr aio_cancel 2 , 113.Xr aio_error 2 , 114.Xr aio_read 2 , 115.Xr aio_return 2 , 116.Xr aio_suspend 2 , 117.Xr aio_write 2 , 118.Xr fsync 2 , 119.Xr read 2 , 120.Xr write 2 , 121.Xr aio 4 122.Sh STANDARDS 123The 124.Fn aio_waitcomplete 125system call is a 126.Fx Ns -specific 127extension. 128.Sh HISTORY 129The 130.Fn aio_waitcomplete 131system call first appeared in 132.Fx 4.0 . 133.Sh AUTHORS 134The 135.Fn aio_waitcomplete 136system call and this manual page were written by 137.An Christopher M Sedore Aq Mt [email protected] . 138