csx_AccessConfigurationRegister(9F)
csx_Parse_CISTPL_BYTEORDER(9F)
csx_Parse_CISTPL_CFTABLE_ENTRY(9F)
csx_Parse_CISTPL_DEVICEGEO(9F)
csx_Parse_CISTPL_DEVICEGEO_A(9F)
csx_Parse_CISTPL_DEVICE_OA(9F)
csx_Parse_CISTPL_DEVICE_OC(9F)
csx_Parse_CISTPL_LINKTARGET(9F)
csx_Parse_CISTPL_LONGLINK_A(9F)
csx_Parse_CISTPL_LONGLINK_C(9F)
csx_Parse_CISTPL_LONGLINK_MFC(9F)
ddi_get_soft_iblock_cookie(9F)
ddi_intr_get_supported_types(9F)
ddi_prop_lookup_byte_array(9F)
ddi_prop_lookup_int64_array(9F)
ddi_prop_lookup_string_array(9F)
ddi_prop_update_byte_array(9F)
ddi_prop_update_int64_array(9F)
ddi_prop_update_string_array(9F)
ldi_prop_lookup_byte_array(9F)
ldi_prop_lookup_int64_array(9F)
ldi_prop_lookup_string_array(9F)
mac_prop_info_set_default_link_flowctrl(9F)
mac_prop_info_set_default_str(9F)
mac_prop_info_set_default_uint8(9F)
mac_prop_info_set_range_uint32(9F)
net_event_notify_unregister(9F)
net_instance_notify_register(9F)
net_instance_notify_unregister(9F)
net_instance_protocol_unregister(9F)
net_protocol_notify_register(9F)
nvlist_lookup_boolean_array(9F)
nvlist_lookup_boolean_value(9F)
nvlist_lookup_nvlist_array(9F)
nvlist_lookup_string_array(9F)
nvlist_lookup_uint16_array(9F)
nvlist_lookup_uint32_array(9F)
nvlist_lookup_uint64_array(9F)
nvpair_value_boolean_array(9F)
scsi_get_device_type_scsi_options(9F)
usb_get_current_frame_number(9F)
usb_get_max_pkts_per_isoc_request(9F)
usb_pipe_get_max_bulk_transfer_size(9F)
usb_pipe_stop_intr_polling(9F)
usb_pipe_stop_isoc_polling(9F)
- USB bulk transfer function
#include <sys/usb/usba.h> int usb_pipe_bulk_xfer(usb_pipe_handle_t pipe_handle, usb_bulk_req_t *request, usb_flags_t flags);
Solaris DDI specific (Solaris DDI)
Bulk pipe handle on which request is made.
Pointer to bulk transfer request.
USB_FLAGS_SLEEP is the only flag recognized. Wait for request to complete.
The usb_pipe_bulk_xfer() function requests the USBA framework to perform a transfer through a USB bulk pipe. The request is passed to the host controller driver (HCD), which performs the necessary transactions to complete the request. Requests are synchronous when USB_FLAGS_SLEEP has been specified in flags. Calls for synchronous requests will not return until their transaction has completed. Asynchronous requests (made without specifying the USB_FLAGS_SLEEP flag) notify the caller of their completion via a callback function.
Requests for bulk transfers must have mblks attached to store data. Allocate an mblk for data when a request is allocated via usb_alloc_bulk_req(9F) by passing a positive value for the len argument.
Transfer was successful.
Request is NULL.
Called from interrupt context with the USB_FLAGS_SLEEP flag set.
The request has been freed or otherwise invalidated.
A set of conflicting attributes were specified. See usb_bulk_request(9S).
The normal and/or exception callback was NULL and USB_FLAGS_SLEEP was not set.
Data space is not provided to a bulk request:
(bulk_data = NULL or bulk_len = 0)
Pipe handle is NULL or invalid.
Pipe is closing or closed.
Pipe handle refers to a pipe which is in the USB_PIPE_STATE_ERROR state.
Memory, descriptors or other resources are unavailable.
Host controller is in error state.
An asynchronous transfer failed or an internal error occurred.
A bulk request requested too much data:
(length > usb_get_max_bulk_xfer size())
The pipe is in a unsuitable state (error, busy, not ready).
Additional status information may be available in the bulk_completion_reason and bulk_cb_flags fields of the request. Please see usb_completion_reason(9S) and usb_callback_flags(9S) for more information.
May be called from kernel or user context without regard to arguments. May be called from interrupt context only when the USB_FLAGS_SLEEP flag is clear.
/* Allocate, initialize and issue a synchronous bulk request. */ usb_bulk_req_t bulk_req; mblk_t *mblk; bulk_req = usb_alloc_bulk_req(dip, bp->b_bcount, USB_FLAGS_SLEEP); bulk_req->bulk_attributes = USB_ATTRS_AUTOCLEARING; mblk = bulk_req->bulk_data; bcopy(buffer, mblk->b_wptr, bp->b_bcount); mblk->b_wptr += bp->b_bcount; if ((rval = usb_pipe_bulk_xfer(pipe, bulk_req, USB_FLAGS_SLEEP)) != USB_SUCCESS) { cmn_err (CE_WARN, "%s%d: Error writing bulk data.", ddi_driver_name(dip), ddi_get_instance(dip)); }
See attributes(5) for descriptions of the following attributes:
|
attributes(5), usb_alloc_request(9F), usb_get_cfg(9F), usb_get_status(9F), usb_pipe_ctrl_xfer(9F), usb_pipe_get_state(9F), usb_pipe_intr_xfer(9F), usb_pipe_isoc_xfer(9F), usb_pipe_open(9F), usb_pipe_reset(9F), usb_bulk_request(9S), usb_callback_flags(9S), usb_completion_reason(9S), usb_ctrl_request(9S), usb_intr_request(9S), usb_isoc_request(9S)