usb_pipe_bulk_xfer man page on SmartOS

Man page or keyword search:  
man Server   16655 pages
apropos Keyword Search (all sections)
Output format
SmartOS logo
[printable version]

USB_PIPE_BULK_XFER(9F)					USB_PIPE_BULK_XFER(9F)

NAME
       usb_pipe_bulk_xfer - USB bulk transfer function

SYNOPSIS
       #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);

INTERFACE LEVEL
       Solaris DDI specific (Solaris DDI)

PARAMETERS
       pipe_handle
		      Bulk pipe handle on which request is made.

       request
		      Pointer to bulk transfer request.

       flags
		      USB_FLAGS_SLEEP  is  the	only flag recognized. Wait for
		      request to complete.

DESCRIPTION
       The usb_pipe_bulk_xfer() function requests the USBA framework  to  per‐
       form  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  non-negative  value for the len
       argument.

RETURN VALUES
       USB_SUCCESS
				Transfer was successful.

       USB_INVALID_ARGS
				Request is NULL.

       USB_INVALID_CONTEXT
				Called	from  interrupt	  context   with   the
				USB_FLAGS_SLEEP flag set.

       USB_INVALID_REQUEST
				The request has been freed or otherwise inval‐
				idated.

				A set of conflicting  attributes  were	speci‐
				fied. 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  non-zero
				length bulk request:

				  (bulk_data == NULL and bulk_len != 0)

       USB_INVALID_PIPE
				Pipe handle is NULL or invalid.

				Pipe is closing or closed.

       USB_PIPE_ERROR
				Pipe  handle  refers to a pipe which is in the
				USB_PIPE_STATE_ERROR state.

       USB_NO_RESOURCES
				Memory, descriptors  or	 other	resources  are
				unavailable.

       USB_HC_HARDWARE_ERROR
				Host controller is in error state.

       USB_FAILURE
				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_comple‐
       tion_reason  and	 bulk_cb_flags	fields	of  the	 request.  Please  see
       usb_completion_reason(9S)  and usb_callback_flags(9S) for more informa‐
       tion.

CONTEXT
       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.

EXAMPLES
	    /* 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));
	     }

ATTRIBUTES
       See attributes(5) for descriptions of the following attributes:

       ┌────────────────────┬───────────────────┐
       │  ATTRIBUTE TYPE    │  ATTRIBUTE VALUE	│
       ├────────────────────┼───────────────────┤
       │Architecture	    │ PCI-based systems │
       ├────────────────────┼───────────────────┤
       │Interface stability │ Committed		│
       └────────────────────┴───────────────────┘

SEE ALSO
       attributes(5),  usb_alloc_request(9F),  usb_get_cfg(9F),	  usb_get_sta‐
       tus(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)

				  Aug 3, 2006		USB_PIPE_BULK_XFER(9F)
[top]

List of man pages available for SmartOS

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net