Copyright (c) 1999 Christopher M Sedore. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and...
NAMEaio_waitcomplete - wait for the next completion of an aio request
SYNOPSISIn aio.h Ft int Fn aio_waitcomplete struct aiocb **iocbp struct timespec *timeout
DESCRIPTIONThe Fn aio_waitcomplete system call waits for completion of an asynchronous I/O request. Upon completion, Fn aio_waitcomplete returns the result of the function and sets Fa iocbp to point to the structure associated with the original request. If an asynchronous I/O request is completed before Fn aio_waitcomplete is called, it returns immediately with the completed request.
If Fa timeout is a non-NULL pointer, it specifies a maximum interval to wait for a asynchronous I/O request to complete. If Fa timeout is a NULL pointer, Fn aio_waitcomplete waits indefinitely. To effect a poll, the Fa timeout argument should be non-NULL, pointing to a zero-valued timeval structure.
The Fn aio_waitcomplete system call also serves the function of Fn aio_return , thus Fn aio_return should not be called for the control block returned in Fa iocbp .
RETURN VALUESIf an asynchronous I/O request has completed, Fa iocbp is set to point to the control block passed with the original request, and the status is returned as described in read(2), write(2), or fsync(2). On failure, Fn aio_waitcomplete returns -1 sets iocbp to NULL and sets errno to indicate the error condition.
ERRORSThe Fn aio_waitcomplete system call fails if:
- Bq Er EINVAL
- The specified time limit is invalid.
- Bq Er EAGAIN
- The process has not yet called Fn aio_read or Fn aio_write .
- Bq Er EINTR
- A signal was delivered before the timeout expired and before any asynchronous I/O requests completed.
- Bq Er EWOULDBLOCK
- Bq Er EINPROGRESS
- The specified time limit expired before any asynchronous I/O requests completed.