![]()  | 
![]()  | 
![]()  | 
![]()  | 
Submit a previously set up URB to the USB stack
#include <sys/usbdi.h>
int usbd_io( struct usbd_urb *urb, 
             struct usbd_pipe *pipe, 
             void (*func)(struct usbd_urb *,
                          struct usbd_pipe *, void *),
             void *handle,
             uint32_t timeout );
libusbdi
This routine submits a previously set up URB to the USB stack. The URB would have been set up from one of these functions:
![]()  | 
For this release of the USB DDK, vendor requests are synchronous only. Therefore, the func parameter in usbd_io() must be NULL. | 
The usbd_io() function is the one that actually makes the data transfer happen; the setup functions simply set up the URB for the data transfer.
| Safety: | |
|---|---|
| Cancellation point | Yes | 
| Interrupt handler | No | 
| Signal handler | No | 
| Thread | Yes | 
usbd_descriptor(), usbd_feature(), usbd_setup_control(), usbd_setup_bulk(), usbd_setup_interrupt(), usbd_setup_isochronous(), usbd_setup_vendor(), usbd_status()
![]()  | 
![]()  | 
![]()  | 
![]()  |