usb_intr_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_intr_request(9S)	  Data Structures for Drivers	  usb_intr_request(9S)

NAME
       usb_intr_request - USB interrupt request structure

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

INTERFACE LEVEL
       Solaris DDI specific (Solaris DDI)

DESCRIPTION
       An  interrupt  request  (that  is,  a request sent through an interrupt
       pipe), is used to transfer  small amounts  of  data  infrequently,  but
       with bounded  service periods. (Data flows in either direction.) Please
       refer to Section 5.7 of the USB 2.0 specification  for  information  on
       interrupt  transfers.  (The  USB	 2.0  specification  is	 available  at
       www.usb.org.)

       The fields in the  usb_intr_req_t  are  used  to	 format	 an  interrupt
       request.	 Please	 see  below  for  acceptable combinations of flags and
       attributes.

       The usb_intr_req_t fields are:

	  ushort_t	 intr_len;	 /* Size of packet.  Must be set */
					 /* Max size is 8K for low/full speed */
					 /* Max size is 20K for high speed */
	  mblk_t	 *intr_data;	 /* the data for the data phase	 */
					 /* IN: zero-len mblk alloc by client */
					 /* OUT: allocated by client */
	  usb_opaque_t	 intr_client_private; /* client specific information  */
	  uint_t	 intr_timeout;	 /* only with ONE TIME POLL, in secs */
					 /* If set to zero, defaults to 5 sec */
	  usb_req_attrs_t intr_attributes;

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

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

	  /* set by USBA/HCD on completion */
	  usb_cr_t	 intr_completion_reason; /* overall completion status */
					    /* See usb_completion_reason(9S) */
	  usb_cb_flags_t intr_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 interrupt requests:

       USB_ATTRS_SHORT_XFER_OK

	   Accept transfers where less data is received than expected.

       USB_ATTRS_AUTOCLEARING

	   Have USB framework reset pipe and clear functional stalls automati‐
	   cally on exception.

       USB_ATTRS_PIPE_RESET

	   Have USB framework reset pipe automatically on exception.

       USB_ATTRS_ONE_XFER

	   Perform a single IN transfer.  Do not start periodic transfers with
	   this request.

       Please see usb_request_attributes(9S) for more information.

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

       1) The following table indicates combinations of
	  usb_pipe_intr_xfer() flags argument and fields
	  of the usb_intr_req_t request argument (X = don't care):

	    "none" as attributes in the table below indicates
	    neither ONE_XFER nor SHORT_XFER_OK

	    flags     Type  attributes	    data    timeout semantics
	    ----------------------------------------------------------------
	    X	      IN    X		    !=NULL  X	    illegal

	    X	      IN    !ONE_XFER	    X	    !=0	    illegal

	    X	      IN    !ONE_XFER	    NULL    0	    See table note (A)

	    no sleep  IN    ONE_XFER	    NULL    0	    See table note (B)

	    no sleep  IN    ONE_XFER	    NULL    !=0	    See table note (C)

	    sleep     IN    ONE_XFER	    NULL    0	    See table note (D)

	    sleep     IN    ONE_XFER	    NULL    !=0	    See table note (E)

	    X	      OUT   X		    NULL    X	    illegal

	    X	      OUT   ONE_XFER	    X	    X	    illegal

	    X	      OUT   SHORT_XFER_OK   X	    X	    illegal

	    no sleep  OUT   none	    !=NULL  0	    See table note (F)

	    no sleep  OUT   none	    !=NULL  !=0	    See table note (G)

	    sleep     OUT   none	    !=NULL  0	    See table note (H)

	    sleep     OUT   none	    !=NULL  !=0	    See table note (I)

	    Table notes:

	      A) Continuous polling, new data is returned in cloned request
		 structures via continous callbacks, original request is
		 returned on stop polling.

	      B) One time poll, no timeout, callback when data is
		 received.

	      C) One time poll, with timeout, callback when data
		 is received.

	      D) One time poll, no timeout, one callback, unblock
		 when transfer completes.

	      E) One time poll, timeout, one callback, unblock when
		 transfer completes or timeout occurs.

	      F) Transfer until data exhausted, no timeout, callback
		 when done.

	      G) Transfer until data exhausted, timeout, callback
		 when done.

	      H) Transfer until data exhausted, no timeout, unblock
		 when data is received.

	      I) Transfer until data exhausted, timeout, unblock
		 when data is received.

	  2) USB_FLAGS_SLEEP indicates here just to wait for
	     resources, except when ONE_XFER is set, in which case it
	     also waits for completion before returning.

	  3) Reads (IN):

	      a) The client driver does *not* provide a data buffer.
		 By default, a READ request would mean continuous
		 polling for data IN.  The USBA framework allocates a
		 new data buffer for each poll.	 intr_len specifies
		the amount of 'periodic data' for each poll.

	      b) The USBA framework issues a callback to the client
		 at the end of a polling interval when there is data to
		 return.  Each callback returns its data in a new request
		 cloned from the original.  Note that the amount of data
		 read IN is either intr_len or "wMaxPacketSize" in length.

	      c) Normally, the HCD keeps polling the interrupt endpoint
		 forever even if there is no data to be read IN.  A
		 client driver may stop this polling by calling
		 usb_pipe_stop_intr_polling(9F).

	      d) If a client driver chooses to pass USB_ATTRS_ONE_XFER
		 as 'xfer_attributes' the HCD polls for data until
		 some data is received.	 The USBA framework reads in
		 the data, does a callback, and stops polling for any
		 more data.  In this case, the client
		 driver need not explicitly call
		 usb_pipe_stop_intr_polling().

	      e) All requests with USB_ATTRS_ONE_XFER require callbacks
		 to be specified.

	      f) When continuous polling is stopped, the original
		 request is returned with USB_CR_STOPPED_POLLING.

	      g) If the USB_ATTRS_SHORT_XFER_OK attribute is not set
		 and a short transfer is received while polling,
		 an error is assumed and polling is stopped.  In this
		 case or the case of other errors, the error must be cleared
		 and polling restarted by the client driver. Setting the
		 USB_ATTRS_AUTOCLEARING attribute will clear the error
		 but not restart polling.  (NOTE: Polling can be
		 restarted from an exception callback corresponding to
		 an original request.  Please see usb_pipe_intr_xfer(9F)
		 for more information.

	  4) Writes (OUT):

	      a) A client driver provides the data buffer, and
		 data, needed for intr write.

	      b) Unlike read (see previous section), there
		is no continuous write mode.

	      c) The USB_ATTRS_ONE_XFER attribute is illegal.
		 By default USBA keeps writing intr data until
		 the provided data buffer has been
		 written out. The USBA framework does ONE
		 callback to the client driver.

	      d) Queueing is supported.

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

	   The intr_cb_flags are set prior to calling the
	   exception callback handler, 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. Please see usb_callback_flags(9S) for a
	  description of use and operation.

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_ctrl_xfer(9F), usb_pipe_bulk_xfer(9F),
       usb_pipe_intr_xfer(9F),	usb_pipe_isoc_xfer(9F),	 usb_bulk_request(9S),
       usb_callback_flags(9S),			    usb_completion_reason(9S),
       usb_ctrl_request(9S), usb_isoc_request(9S), usb_request_attributes(9S)

SunOS 5.10			  5 Jan 2004		  usb_intr_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