usb_bulk_request man page on SunOS

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

usb_bulk_request(9S)	  Data Structures for Drivers	  usb_bulk_request(9S)

NAME
       usb_bulk_request - USB bulk request structure

SYNOPSIS
       #include	 <sys/usb/usba.h>

INTERFACE LEVEL
       Solaris DDI specific (Solaris DDI)

DESCRIPTION
       A bulk request (that is, a request sent through a bulk pipe) is used to
       transfer large amounts of data in reliable but non-time-critical	 fash‐
       ion.  Please  refer  to	Section	 5.8  of the USB 2.0 specification for
       information on bulk transfers. (The USB 2.0 specification is  available
       at www.usb.org.)

       The  fields  in	the  usb_bulk_req_t are used to format a bulk request.
       Please  see  below   for	  acceptable   combinations   of   flags   and
       attributes.

       The usb_bulk_req_t fields are:

       uint_t	       bulk_len;       /* number of bytes to xfer      */
				       /* Please see */
				       /* usb_pipe_get_max_bulk_xfer_size(9F) */
				       /* for maximum size */
       mblk_t	       *bulk_data;     /* the data for the data phase  */
				       /* IN or OUT: allocated by client */
       uint_t	       bulk_timeout;   /* xfer timeout value in secs   */
				       /* If set to zero, defaults to 5 sec */
       usb_opaque_t    bulk_client_private; /* Client specific information */
       usb_req_attrs_t bulk_attributes; /* xfer-attributes     */

       /* Normal callback function, called upon completion. */
       void	       (*bulk_cb)(
			   usb_pipe_handle_t ph, struct usb_bulk_req *req);

       /* Exception callback function, for error handling. */
       void	       (*bulk_exc_cb)(
			   usb_pipe_handle_t ph, struct usb_bulk_req *req);

       /* set by USBA/HCD framework on completion */
       usb_cr_t	       bulk_completion_reason; /* overall success status */
					  /* See usb_completion_reason(9S) */
       usb_cb_flags_t  bulk_cb_flags; /* recovery done by callback hndlr */
					  /* See usb_callback_flags(9S) */

       Request attributes define special handling for transfers. The following
       attributes are valid for bulk requests:

       USB_ATTRS_SHORT_XFER_OK

	   USB framework accepts transfers where less data  is	received  than
	   expected.

       USB_ATTRS_AUTOCLEARING

	   USB	framework  resets  pipe and clears functional stalls automati‐
	   cally on exception.

       USB_ATTRS_PIPE_RESET

	   USB framework resets pipe automatically on exception.

       Please see usb_request_attributes(9S) for more information.

       Bulk transfers/requests are subject to the  following  constraints  and
       caveats:

       1)  The	following table indicates combinations of usb_pipe_bulk_xfer()
       flags argument and fields of the usb_bulk_req_t request argument	 (X  =
       don't care).

		 Flags	   Type	 Attributes	  Data	 Timeout Semantics
		 ---------------------------------------------------------------
		  X	    X	  X		   ==NULL X	 illegal

		  X	    X	  ONE_XFER	   X	  X	 illegal

		  no sleep  IN	  !SHORT_XFER_OK   !=NULL 0	 See  note (A)

		  no sleep  IN	  !SHORT_XFER_OK   !=NULL > 0	 See  note (B)

		  sleep	    IN	  !SHORT_XFER_OK   !=NULL 0	 See  note (C)

		  sleep	    IN	  !SHORT_XFER_OK   !=NULL > 0	 See  note (D)

		  no sleep  IN	  SHORT_XFER_OK	   !=NULL 0	 See  note (E)

		  no sleep  IN	  SHORT_XFER_OK	   !=NULL > 0	 See  note (F)

		  sleep	    IN	  SHORT_XFER_OK	   !=NULL 0	 See  note (G)

		  sleep	    IN	  SHORT_XFER_OK	   !=NULL > 0	 See  note (H)

		  X	    OUT	  SHORT_XFER_OK	  X	  X	 illegal

		  no sleep  OUT	  X		  !=NULL  0	 See  note (I)

		  no sleep  OUT	  X		  !=NULL  > 0	 See  note (J)

		  sleep	    OUT	  X		  !=NULL  0	 See  note (K)

		  sleep	    OUT	  X		  !=NULL  > 0	 See  note (L)

       Table notes:

		 A). Fill buffer, no timeout, callback when bulk_len is trans‐
		 ferred.

		 B). Fill buffer, with	timeout;  callback  when  bulk_len  is
		 transferred.

		 C).  Fill buffer, no timeout, unblock when bulk_len is trans‐
		 ferred; no callback.

		 D). Fill buffer,  with	 timeout;  unblock  when  bulk_len  is
		 transferred or a timeout occurs; no callback.

		 E)  Fill buffer, no timeout, callback when bulk_len is trans‐
		 ferred or first short packet is received.

		 F). Fill buffer, with	timeout;  callback  when  bulk_len  is
		 transferred or first short packet is received.

		 G).  Fill buffer, no timeout, unblock when bulk_len is trans‐
		 ferred or first short packet is received; no callback.

		 H). Fill buffer,  with	 timeout;  unblock  when  bulk_len  is
		 transferred,  first  short  packet  is received, or a timeout
		 occurs; no callback.

		 I). Empty buffer,  no	timeout;  callback  when  bulk_len  is
		 transferred.

		 J)  Empty  buffer,  with  timeout;  callback when bulk_len is
		 transferred or a timeout occurs.

		 K). Empty buffer, no timeout; unblock when bulk_len is trans‐
		 ferred; no callback.

		 L).  Empty  buffer,  with  timeout;  unblock when bulk_len is
		 transferred or a timeout occurs; no callback.

       2) bulk_len must be > 0. bulk_data must not be NULL.

       3) Bulk_residue is set for both READ and WRITE. If it is set to	0,  it
       means  that  all	 of the data was transferred successfully.  In case of
       WRITE it contains data not written and in case of READ it contains  the
       data  NOT  read	so far. A residue can only occur because of timeout or
       bus/device error.  (Note that a short transfer for a request where  the
       USB_ATTRS_SHORT_XFER_OK	attribute  is  not  set is considered a device
       error.)	An exception callback is made and  completion_reason  will  be
       non-zero.

       4)  Splitting  large  Bulk xfers: Due to internal constraints, the USBA
       framework can only do a limited size bulk data  xfer  per  request.   A
       client  driver  may first determine this limitation by calling the USBA
       interface  (usb_pipe_get_max_bulk_xfer_size(9F))	 and   then   restrict
       itself  to doing transfers in multiples of this fixed size. This forces
       a client driver to do data xfers in a loop for a large request,	split‐
       ting it into multiple chunks of fixed size.

       The  bulk_completion_reason  indicates the status of the transfer.  See
       usb_completion_reason(9S) for usb_cr_t definitions.

       The bulk_cb_flags are set prior to calling the exception callback  han‐
       dler  to summarize recovery actions taken and errors encountered during
       recovery. See usb_callback_flags(9S) for usb_cb_flags_t definitions.

       --- Callback handling ---

       All usb request types share the same callback handling.	See  usb_call‐
       back_flags(9S) for details.

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

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

SEE ALSO
       usb_alloc_request(9F),  usb_pipe_bulk_xfer(9F), usb_pipe_ctrl_xfer(9F),
       usb_pipe_get_max_bulk_transfer_size(9F),	       usb_pipe_intr_xfer(9F),
       usb_pipe_isoc_xfer(9F),	 usb_callback_flags(9S),   usb_completion_rea‐
       son(9S),		 usb_ctrl_request(9S),		 usb_intr_request(9S),
       usb_isoc_request(9S), usb_request_attributes(9S)

SunOS 5.10			  5 Jan 2004		  usb_bulk_request(9S)
[top]

List of man pages available for SunOS

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