udi_gio_xfer_nak(3udi)
Abnormal completion of a GIO transfer request
#include <udi.h>void udi_gio_xfer_nak ( udi_gio_xfer_cb_t *cb, udi_status_t status );ARGUMENTS cb is a pointer to a GIO transfer control block.
status indicates why the transfer was unsuccessful.
TARGET CHANNEL The target channel for this operation is the bind channel connecting a GIO provider to a GIO client.
DESCRIPTION The udi_gio_xfer_nak operation is used by a Generic I/O provider to send a negative acknowledgement of a transfer request (indicating failure, overruns, and underruns) back to the Generic I/O client that requested the transfer using a udi_gio_xfer_req operation. Whether or not overruns and underruns are considered errors is defined by the semantics of the particular op used and the needs of the client.
The op member of the control block must have the same value as at the time of the udi_gio_xfer_req operation. The contents of the tr_params inline memory are ignored for udi_gio_xfer_nak.
If data_buf is not NULL, the provider driver must set data_buf->buf_size to the number of bytes actually transferred, which must be less than or equal to the requested size. The data_buf pointer must either be the same as in the original request, or a direct "descendant" of the original buffer (i.e. results from a chain of one or more service calls such as udi_buf_write that replace the original buffer with a modified version).
If flags in the control block include UDI_GIO_DIR_WRITE, the contents of the data buffer must be the same as in the original request. This allows the client driver to retry failed operations if it so chooses.
Data in data_buf is always preserved by this channel operation.
WARNINGS The control block must be the same control block as passed to the driver in the corresponding udi_gio_xfer_req operation.
REFERENCES udi_gio_xfer_cb_t, udi_gio_xfer_req, udi_gio_xfer_ack, udi_buf_copy