To cancel I/O on a channel, the access mode of the calling
process must be equal to or more privileged than the access mode
of the process that made the original channel assignment.
The $CANCEL service requires system dynamic memory and uses the
process's buffered I/O limit (BIOLM) quota.
When a request currently in progress is canceled, the driver is
notified immediately. Actual cancellation may or may not occur
immediately, depending on the logical state of the driver. When
cancellation does occur, the action taken for I/O in progress is
similar to that taken for queued requests. For example:
o The specified event flag is set.
o The first word of the I/O status block, if specified, is set
to SS$_CANCEL if the I/O request is queued, or to SS$_ABORT if
the I/O operation is in progress.
o If the asynchronous system trap (AST) is specified, it is
queued.
For proper synchronization between this service and the actual
canceling of I/O requests to take place, the issuing process
must wait for the I/O process to complete normally. Note that
the I/O has been canceled. Outstanding I/O requests are canceled
automatically at image exit.