udi_channel_op_abort(3udi)
Abort a previously issued channel operation
#include <udi.h>void udi_channel_op_abort ( udi_channel_t target_channel, udi_cb_t *orig_cb );ARGUMENTS target_channel is a channel handle for the channel to which the previously issued operation was sent.
orig_cb is a control block pointer for the control block that was sent with the original operation. Even though the driver no longer owns that control block, it is allowed to use the otherwise stale pointer only with this service call.
DESCRIPTION udi_channel_op_abort delivers a UDI_CHANNEL_OP_ABORTED event via udi_channel_event_ind to the other end of the target channel, in order to request that a previously sent request, using orig_cb as its control block, be aborted.
The original operation must be of an operation type defined to be abortable by the relevant metalanguage definition. Metalanguage libraries indicate that operations are abortable by using the UDI_MEI_OP_ABORTABLE flag in the corresponding udi_mei_op_template_t.
The original control block, identified by orig_cb, must previously have been sent on the target channel using an abortable operation, and must not yet have been returned (via a metalanguage-specific operation) to the initiating region. The control block is aborted and returned to the current driver via the normal metalanguage completion operation with a status of UDI_STAT_ABORTED to indicate that the operation was aborted; operations that have already completed will be passed back to the current module in the normal fashion without the abort status indication.
Even if the control block was originally sent as part of a chain of control blocks sent with one operation, only the specific control block indicated by orig_cb is aborted.
Drivers receiving abortable control blocks must not free them but must (eventually) return them over the same channel on which they were received.
references udi_channel_event_cb_t, udi_channel_event_ind, udi_mei_op_template_t