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
—
#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);
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.
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.
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.
December 20, 2016 | OmniOS |