usb_sg_init (9) - Linux Man Pages
usb_sg_init: initializes scatterlist-based bulk/interrupt I/O request
usb_sg_init - initializes scatterlist-based bulk/interrupt I/O request
int usb_sg_init(struct usb_sg_request
*io, struct usb_device *dev, unsigned pipe, unsigned period, struct scatterlist *sg, int nents, size_t length, gfp_t mem_flags);
- request block being initialized. until usb_sg_wait returns, treat this as a pointer to an opaque block of memory,
- the usb device that will send or receive the data
- endpoint "pipe" used to transfer the data
- polling rate for interrupt endpoints, in frames or (for high speed endpoints) microframes; ignored for bulk
- scatterlist entries
- how many entries in the scatterlist
- how many bytes to send from the scatterlist, or zero to send every byte identified in the list.
- SLAB_* flags affecting memory allocations in this call
This initializes a scatter/gather request, allocating resources such as I/O mappings and urb memory (except maybe memory used by USB controller drivers).
The request must be issued using usb_sg_wait, which waits for the I/O to complete (or to be canceled) and then cleans up all resources allocated by usb_sg_init.