aio_suspend(3aio)
aio_suspend, aio_suspend64 --
suspend until asynchronous I/O completes
Synopsis
cc [options] -Kthread file
#include <aio.h>
int aio_suspend(const struct aiocb *list[], int nent,
const struct timespec *timeout);
int aio_suspend64(const struct aiocb64 *list[], int nent,
const struct timespec *timeout);
Description
aio_suspend suspends the calling thread until at least one of the
asynchronous I/O operations referenced by the list argument has
completed, until a signal interrupts the function, or, if timeout is
not NULL, until the time interval specified by timeout has passed.
If any of the aiocb structures in the list correspond to completed
asynchronous I/O operations (i.e., the error status for the operation is
not equal to EINPROGRESS) at the time of the call, the function
returns without suspending the calling process.
None of the aiocb structures in the list may have the AIO_RAW
flag set.
The list argument is an array of pointers to
asynchronous I/O control blocks.
The nent argument indicates the number of elements in the array.
Each aiocb structure pointed to is used in initiating
an asynchronous I/O request via aio_read, aio_write, or
lio_listio.
This array may contain NULL pointers which are ignored.
If this array contains pointers that refer to aiocb structures which
have not been used in submitting asynchronous I/O, the effect is undefined.
If the time interval indicated in the timespec structure pointed to
by timeout passes before any of the I/O operations referenced by
list are completed, aio_suspend returns with an error.
Return values
If the aio_suspend or aio_suspend64 functions return
after one or more asynchronous I/O operations have completed,
the functions return zero.
Otherwise, they return a value of -1 and set errno to
indicate the error.
The application determines which asynchronous I/O completed by scanning
the associated error and return status,
using aio_error and aio_return
(or aio_error64 and aio_return64),
respectively.
Errors
If any of the following conditions occur, the aio_suspend
and aio_suspend64 functions
return -1 and set errno to the corresponding value:
EAGAIN-
No asynchronous I/O indicated in the list referenced by list completed
in the time interval indicated by timeout.
EINTR-
A signal interrupted the aio_suspend or aio_suspend64
function.
Note that, since each asynchronous I/O operation may possibly provoke a signal
when it completes, this error return may be caused by the completion
of one (or more) of the I/O operations being awaited.
ENOMEM-
There were no internal kernal aio control blocks available to service
the request (number of kernel aio control blocks is tunable via
the NUMAIO kernel parameter; see
``Miscellaneous parameters'' in Monitoring and tuning the system).
ENOSYS-
One or more of the asynchronous I/O operations referenced by
the list argument had the AIO_RAW flag set.
References
aiocb(5),
aio_cancel(3aio),
aio_error(3aio),
aio_read(3aio),
aio_return(3aio),
aio_write(3aio)
intro(2)
Notices
In general, users should not mix notification via callback (for example,
by requesting callback in the aiocb) with the use
of aio_suspend or aio_suspend64.
If they are mixed, the aio_suspend and aio_suspend64
calls will always return
an error with errno set to EINTR.
Considerations for large file support
aio_suspend64 supports large files, but is otherwise identical
to aio_suspend.
For details on programming for large file capable applications, see
``Large File Support''
on intro(2).
© 2004 The SCO Group, Inc. All rights reserved.
UnixWare 7 Release 7.1.4 - 25 April 2004