.TH aio_cancel 3 2002-09-12 "Linux 2.4" Linux AIO" .SH NAME aio_cancel - Cancel asynchronous I/O requests .SH SYNOPSYS .nf .B #include .sp .br .B #include .sp .br .BI "int aio_cancel (int fildes " , struct aiocb *aiocbp " )" .fi .SH DESCRIPTION When one or more requests are asynchronously processed, it might be useful in some situations to cancel a selected operation, e.g., if it becomes obvious that the written data is no longer accurate and would have to be overwritten soon. As an example, assume an application, which writes data in files in a situation where new incoming data would have to be written in a file which will be updated by an enqueued request. The POSIX AIO implementation provides such a function, but this function is not capable of forcing the cancellation of the request. It is up to the implementation to decide whether it is possible to cancel the operation or not. Therefore using this function is merely a hint. .B "The libaio implementation does not implement the cancel operation in the" .B "POSIX libraries". .PP The .IR aio_cancel function can be used to cancel one or more outstanding requests. If the .IR aiocbp parameter is .IR NULL , the function tries to cancel all of the outstanding requests which would process the file descriptor .IR fildes (i.e., whose .IR aio_fildes member is .IR fildes ). If .IR aiocbp is not .IR NULL , .IR aio_cancel attempts to cancel the specific request pointed to by .IR aiocbp. For requests which were successfully canceled, the normal notification about the termination of the request should take place. I.e., depending on the .IR "struct sigevent" object which controls this, nothing happens, a signal is sent or a thread is started. If the request cannot be canceled, it terminates the usual way after performing the operation. After a request is successfully canceled, a call to .IR aio_error with a reference to this request as the parameter will return .B ECANCELED and a call to .IR aio_return will return .IR -1. If the request wasn't canceled and is still running the error status is still .B EINPROGRESS. When the sources are compiled with .IR "_FILE_OFFSET_BITS == 64" , this function is in fact .IR aio_cancel64 since the LFS interface transparently replaces the normal implementation. .SH "RETURN VALUES" .TP .B AIO_CANCELED If there were requests which haven't terminated and which were successfully canceled. .TP .B AIO_NOTCANCELED If there is one or more requests left which couldn't be canceled, . In this case .IR aio_error must be used to find out which of the, perhaps multiple, requests (in .IR aiocbp is .IR NULL ) weren't successfully canceled. .TP .B AIO_ALLDONE If all requests already terminated at the time .IR aio_cancel is called the return value is . .SH ERRORS If an error occurred during the execution of .IR aio_cancel the function returns .IR -1 and sets .IR errno to one of the following values. .TP .B EBADF The file descriptor .IR fildes is not valid. .TP .B ENOSYS .IR aio_cancel is not implemented. .SH "SEE ALSO" .BR aio(3), .BR aio_cancel64(3), .BR aio_error(3), .BR aio_error64(3), .BR aio_fsync(3), .BR aio_fsync64(3), .BR aio_init(3), .BR aio_read(3), .BR aio_read64(3), .BR aio_return(3), .BR aio_return64(3), .BR aio_suspend(3), .BR aio_suspend64(3), .BR aio_write(3), .BR aio_write64(3), .BR errno(3),