|
|
udi_gio_xfer_req(3udi)
Request a Generic I/O transfer
#include <udi.h>void udi_gio_xfer_req ( udi_gio_xfer_cb_t *cb );ARGUMENTS cb is a pointer to a GIO transfer control block.
TARGET CHANNEL The target channel for this operation is the bind channel connecting a GIO client to a GIO provider.
DESCRIPTION A Generic I/O client uses this operation to send a transfer request to a Generic I/O provider.
The GIO client must prepare for the udi_gio_xfer_req operation by allocating a GIO transfer control block (calling udi_cb_alloc with a cb_idx that was previously associated with UDI_GIO_XFER_CB_NUM) and filling in all of its members.
The client driver must then set data_buf->buf_size to the amount of data to be transferred via data_buf in the direction(s) indicated by the setting of the direction flags in op: UDI_GIO_DIR_READ and/or UDI_GIO_DIR_WRITE. If no data is to be transferred in either direction, the client may set data_buf to NULL.
Finally, the client sends the GIO transfer control block to the provider with a udi_gio_xfer_req operation.
The particular semantics and parameters for the request depend on the op value in the udi_gio_xfer_cb_t transfer control block. See udi_gio_op_t for descriptions of valid operation codes.
This operation is abortable with udi_channel_op_abort if op is UDI_GIO_OP_READ or UDI_GIO_OP_WRITE.
This operation is recoverable upon abrupt termination of the target region (see Section 4.10, "Driver Faults/Recovery").
If op does not include UDI_GIO_DIR_WRITE, any data in data_buf is not guaranteed to be preserved by this channel operation. That is, when the provider driver receives this operation, the contents (but not the size) of the buffer are unspecified unless UDI_GIO_DIR_WRITE is set.
REFERENCES udi_gio_xfer_cb_t, udi_gio_op_t, udi_gio_xfer_ack