USBA_HCDI_PIPE_STOP_INTR_POLLING(9E) | Driver Entry Points | USBA_HCDI_PIPE_STOP_INTR_POLLING(9E) |
usba_hcdi_pipe_stop_intr_polling
,
usba_hcdi_pipe_stop_isoc_polling
—
stop polling on an interrupt or isochronous pipe
#include
<sys/usb/usba/hcdi.h>
int
prefix_hcdi_pipe_stop_intr_polling
(usba_pipe_handle_data_t
*ph, usba_flags_t usb_flags);
int
prefix_hcdi_pipe_stop_isoc_polling
(usba_pipe_handle_data_t
*ph, usba_flags_t usb_flags);
Volatile - illumos USB HCD private function
This is a private function that is not part of the stable DDI. It may be removed or changed at any time.
Note, the request may still fail even if USB_FLAGS_SLEEP is specified.
The
usba_hcdi_pipe_stop_intr_polling
()
and usba_hcdi_pipe_stop_isoc_polling
() entry points
are called when a client driver wishes to cease polling on an interrupt or
isochronous pipe as describe by ph. While these
functions should only be called on pipes that have outstanding periodic
interrupt and isochronous requests started through calls to either
usba_hcdi_pipe_intr_xfer(9E)
or
usba_hcdi_pipe_isoc_xfer(9E),
as part of device driver hardening, device drivers should verify that there
are outstanding transfers.
For interrupt transfers,
ph, may refer to the root hub and so the driver may
need to cease any synthetic polling it is performing. Isochronous transfers
are forbidden on the root hub, so the
usba_hcdi_pipe_stop_isoc_polling
()
will only be called on a pipe that corresponds to an actual device.
These functions are synchronous requests. In all cases, the driver should take the following steps before returning from these entry points:
It is possible that this function may be called concurrently with a call to the usba_hcdi_pipe_reset(9E) entry point. In such cases, the host controller driver is required to perform synchronization on its data structures.
Upon successful completion, the
usba_hcdi_pipe_stop_intr_polling
() and
uba_hcdi_pipe_stop_isoc_polling
() functions should
return
USB_SUCCESS.
Otherwise, it should return the appropriate USB error. If uncertain, use
USB_FAILURE.
usba_hcdi_pipe_close(9E), usba_hcdi_pipe_intr_xfer(9E), usba_hcdi_pipe_isoc_xfer(9E), usba_hcdi_pipe_reset(9E), usba_hcdi_cb(9F), usba_pipe_handle_data(9S)
December 20, 2016 | OmniOS |