The aio_cancel() function shall attempt to cancel one or more
asynchronous I/O requests currently outstanding against
file descriptor fildes. The aiocbp argument points to
the asynchronous I/O control block for a particular request to
be canceled. If aiocbp is NULL, then all outstanding cancelable
asynchronous I/O requests against fildes shall be
canceled.
Normal asynchronous notification shall occur for asynchronous I/O
operations that are successfully canceled. If there are
requests that cannot be canceled, then the normal asynchronous completion
process shall take place for those requests when they are
completed.
For requested operations that are successfully canceled, the associated
error status shall be set to [ECANCELED] and the return
status shall be -1. For requested operations that are not successfully
canceled, the aiocbp shall not be modified by
aio_cancel().
If aiocbp is not NULL, then if fildes does not have the
same value as the file descriptor with which the
asynchronous operation was initiated, unspecified results occur.
Which operations are cancelable is implementation-defined.
The aio_cancel() function shall return the value AIO_CANCELED
to the calling process if the requested operation(s) were
canceled. The value AIO_NOTCANCELED shall be returned if at least
one of the requested operation(s) cannot be canceled because it
is in progress. In this case, the state of the other operations, if
any, referenced in the call to aio_cancel() is not
indicated by the return value of aio_cancel(). The application
may determine the state of affairs for these operations by
using aio_error(). The value AIO_ALLDONE is returned if all
of the operations have
already completed. Otherwise, the function shall return -1 and set
errno to indicate the error.