usb_pipe_reset 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_RESET(9F)					    USB_PIPE_RESET(9F)

NAME
       usb_pipe_reset  -  Abort	 queued requests from a USB pipe and reset the
       pipe

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

       void usb_pipe_reset(dev_info_t *dip,
	    usb_pipe_handle_t pipe_handle, usb_flags_t usb_flags,
	    void (*callback)(usb_pipe_handle_t cb_pipe_handle,
	    usb_opaque_t arg, int rval, usb_cb_flags_t flags),
	    usb_opaque_t callback_arg);

INTERFACE LEVEL
       Solaris DDI specific (Solaris DDI)

PARAMETERS
       dip
		       Pointer to the device's dev_info structure.

       pipe_handle
		       Handle of the pipe to reset. Cannot be  the  handle  to
		       the default control pipe.

       usb_flags
		       USB_FLAGS_SLEEP	is  the only flag recognized. Wait for
		       completion.

       callback
		       Function called on completion  if  the  USB_FLAGS_SLEEP
		       flag is not specified. If NULL, no notification of com‐
		       pletion is provided.

       callback_arg
		       Second argument to callback function.

DESCRIPTION
       Call usb_pipe_reset() to reset a pipe which is in an error state, or to
       abort  a current request and clear the pipe. The usb_pipe_reset() func‐
       tion can be called on any pipe other than the default control pipe.

       A pipe can be reset automatically when requests sent to the  pipe  have
       the  USB_ATTRS_AUTOCLEARING  attribute specified. Client drivers see an
       exception callback with the USB_CB_STALL_CLEARED callback flag  set  in
       such cases.

       Stalls  on  pipes executing requests without the USB_ATTRS_AUTOCLEARING
       attribute set must be cleared by the client driver. The	client	driver
       is  notified  of the stall via an exception callback. The client driver
       must then call usb_pipe_reset() to clear the stall.

       The usb_pipe_reset() function resets a pipe as follows:
	 1. Any polling activity is stopped if the  pipe  being	 reset	is  an
	 interrupt or isochronous pipe.
	 2. All pending requests are removed from the pipe. An exception call‐
	 back, if specified beforehand, is executed for each aborted request.
	 3. The pipe is reset to the idle state.

       Requests to reset the default control pipe are not allowed.  No	action
       is taken on a pipe which is closing.

       If  USB_FLAGS_SLEEP  is specified in flags, this function waits for the
       action to complete before calling the callback handler  and  returning.
       If  not specified, this function queues the request and returns immedi‐
       ately, and the specified callback is called upon completion.

       callback is the callback handler. It takes the following arguments:

       usb_pipe_handle_t cb_pipe_handle

	   Handle of the pipe to reset.

       usb_opaque_t callback_arg

	   Callback_arg specified to usb_pipe_reset().

       int rval

	   Return value of the reset call.

       usb_cb_flags_t callback_flags

	   Status of the queueing operation. Can be:

	   USB_CB_NO_INFO — Callback was uneventful.

	   USB_CB_ASYNC_REQ_FAILED — Error starting asynchronous request.

RETURN VALUES
       Status is returned to the caller via the callback handler's rval	 argu‐
       ment.  Possible callback hander rval argument values are:

       USB_SUCCESS
			      Pipe successfully reset.

       USB_INVALID_PIPE
			      pipe_handle  specifies a pipe which is closed or
			      closing.

       USB_INVALID_ARGS
			      dip   or	 pipe_handle   arguments   are	 NULL.
			      USB_FLAGS_SLEEP is clear and callback is NULL.

       USB_INVALID_CONTEXT
			      Called   from   interrupt	  context   with   the
			      USB_FLAGS_SLEEP flag set.

       USB_INVALID_PERM
			      pipe_handle specifies the default control pipe.

       USB_FAILURE
			      Asynchronous resources are unavailable. In  this
			      case,  USB_CB_ASYNC_REQ_FAILED  is  passed in as
			      the callback_flags arg to the callback hander.

       Exception callback handlers of interrupt-IN and isochronous-IN requests
       which  are  terminated  by  these commands are called with a completion
       reason of USB_CR_STOPPED_POLLING.

       Exception handlers of incomplete bulk requests are called with  a  com‐
       pletion reason of USB_CR_FLUSHED.

       Exception    handlers   of   unstarted	requests   are	 called	  with
       USB_CR_PIPE_RESET.

       Note that messages mirroring the above errors are logged to the console
       logfile on error. This provides status for calls which could not other‐
       wise provide status.

CONTEXT
       May be called from user or kernel context regardless of arguments.  May
       be  called from any callback with the USB_FLAGS_SLEEP clear. May not be
       called  from  a	callback  executing  in	 interrupt  context   if   the
       USB_FLAGS_SLEEP flag is set.

       If  the	USB_CB_ASYNC_REQ_FAILED	 bit  is  clear in usb_cb_flags_t, the
       callback, if supplied, can block because it is executing in kernel con‐
       text.  Otherwise	 the  callback	cannot	block.	Please	see  usb_call‐
       back_flags(9S) for more information on callbacks.

EXAMPLES
	 void post_reset_handler(
	     usb_pipe_handle_t, usb_opaque_t, int, usb_cb_flags_t);

	 /*
	  * Do an asynchronous reset on bulk_pipe.
	  * Execute post_reset_handler when done.
	  */
	 usb_pipe_reset(dip, bulk_pipe, 0, post_reset_handler, arg);

	 /* Do a synchronous reset on bulk_pipe. */
	 usb_pipe_reset(dip, bulk_pipe, USB_FLAGS_SLEEP, NULL, NULL);

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_get_cfg(9F),	       usb_pipe_bulk_xfer(9F),
       usb_pipe_close(9F),     usb_get_status(9F),     usb_pipe_ctrl_xfer(9F),
       usb_pipe_drain_reqs(9F),			       usb_pipe_get_state(9F),
       usb_pipe_intr_xfer(9F),	  usb_pipe_isoc_xfer(9F),   usb_pipe_open(9F),
       usb_pipe_stop_intr_polling(9F),	       usb_pipe_stop_isoc_polling(9F),
       usb_callback_flags(9S)

				  Jan 5, 2004		    USB_PIPE_RESET(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