---
name: "usb_sg_init"
section: "9"
platform: "linux"
package: "linux-manual-4.9"
version: "4.9.228-1"
release: "Debian 9 (Stretch)"
platforms: ["linux"]
url: "https://new.carta.tech/usb_sg_init"
---

# usb\_sg\_init(9)

initializes scatterlist-based bulk/interrupt I/O request

## NAME

usb\_sg\_init - initializes scatterlist-based bulk/interrupt I/O request

## SYNOPSIS

**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***);**

## ARGUMENTS

*io*

request block being initialized. until **usb\_sg\_wait** returns, treat this as a pointer to an opaque block of memory,

*dev*

the usb device that will send or receive the data

*pipe*

endpoint “pipe” used to transfer the data

*period*

polling rate for interrupt endpoints, in frames or (for high speed endpoints) microframes; ignored for bulk

*sg*

scatterlist entries

*nents*

how many entries in the scatterlist

*length*

how many bytes to send from the scatterlist, or zero to send every byte identified in the list.

*mem\_flags*

SLAB\_\* flags affecting memory allocations in this call

## DESCRIPTION

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**.

The request may be canceled with **usb\_sg\_cancel**, either before or after **usb\_sg\_wait** is called.

## RETURN

Zero for success, else a negative errno value.

## COPYRIGHT
