<?xml version="1.0" encoding="ANSI_X3.4-1968" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968" /><title>The Linux-USB Host Side API</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><link rel="home" href="index.html" title="The Linux-USB Host Side API" /><link rel="next" href="ch01.html" title="Chapter 1. Introduction to USB on Linux" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">The Linux-USB Host Side API</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ch01.html">Next</a></td></tr></table><hr /></div><div class="book" title="The Linux-USB Host Side API"><div class="titlepage"><div><div><h1 class="title"><a id="Linux-USB-API"></a>The Linux-USB Host Side API</h1></div><div><div class="legalnotice" title="Legal Notice"><a id="id2715313"></a><p> This documentation is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. </p><p> This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. </p><p> You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA </p><p> For more details see the file COPYING in the source distribution of Linux. </p></div></div></div><hr /></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="ch01.html">1. Introduction to USB on Linux</a></span></dt><dt><span class="chapter"><a href="ch02.html">2. USB Host-Side API Model</a></span></dt><dt><span class="chapter"><a href="ch03.html">3. USB-Standard Types</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="re01.html"><span>struct usb_ctrlrequest</span></a></span><span class="refpurpose"> — SETUP data for a USB device control request </span></dt><dt><span class="refentrytitle"><a href="re02.html"><span>usb_endpoint_num</span></a></span><span class="refpurpose"> — get the endpoint's number </span></dt><dt><span class="refentrytitle"><a href="re03.html"><span>usb_endpoint_type</span></a></span><span class="refpurpose"> — get the endpoint's transfer type </span></dt><dt><span class="refentrytitle"><a href="re04.html"><span>usb_endpoint_dir_in</span></a></span><span class="refpurpose"> — check if the endpoint has IN direction </span></dt><dt><span class="refentrytitle"><a href="re05.html"><span>usb_endpoint_dir_out</span></a></span><span class="refpurpose"> — check if the endpoint has OUT direction </span></dt><dt><span class="refentrytitle"><a href="re06.html"><span>usb_endpoint_xfer_bulk</span></a></span><span class="refpurpose"> — check if the endpoint has bulk transfer type </span></dt><dt><span class="refentrytitle"><a href="re07.html"><span>usb_endpoint_xfer_control</span></a></span><span class="refpurpose"> — check if the endpoint has control transfer type </span></dt><dt><span class="refentrytitle"><a href="re08.html"><span>usb_endpoint_xfer_int</span></a></span><span class="refpurpose"> — check if the endpoint has interrupt transfer type </span></dt><dt><span class="refentrytitle"><a href="re09.html"><span>usb_endpoint_xfer_isoc</span></a></span><span class="refpurpose"> — check if the endpoint has isochronous transfer type </span></dt><dt><span class="refentrytitle"><a href="re10.html"><span>usb_endpoint_is_bulk_in</span></a></span><span class="refpurpose"> — check if the endpoint is bulk IN </span></dt><dt><span class="refentrytitle"><a href="re11.html"><span>usb_endpoint_is_bulk_out</span></a></span><span class="refpurpose"> — check if the endpoint is bulk OUT </span></dt><dt><span class="refentrytitle"><a href="re12.html"><span>usb_endpoint_is_int_in</span></a></span><span class="refpurpose"> — check if the endpoint is interrupt IN </span></dt><dt><span class="refentrytitle"><a href="re13.html"><span>usb_endpoint_is_int_out</span></a></span><span class="refpurpose"> — check if the endpoint is interrupt OUT </span></dt><dt><span class="refentrytitle"><a href="re14.html"><span>usb_endpoint_is_isoc_in</span></a></span><span class="refpurpose"> — check if the endpoint is isochronous IN </span></dt><dt><span class="refentrytitle"><a href="re15.html"><span>usb_endpoint_is_isoc_out</span></a></span><span class="refpurpose"> — check if the endpoint is isochronous OUT </span></dt></dl></dd><dt><span class="chapter"><a href="ch04.html">4. Host-Side Data Types and Macros</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="re16.html"><span>struct usb_host_ss_ep_comp</span></a></span><span class="refpurpose"> — Valid for SuperSpeed devices only </span></dt><dt><span class="refentrytitle"><a href="re17.html"><span>struct usb_host_endpoint</span></a></span><span class="refpurpose"> — host-side endpoint descriptor and queue </span></dt><dt><span class="refentrytitle"><a href="re18.html"><span>struct usb_interface</span></a></span><span class="refpurpose"> — what usb device drivers talk to </span></dt><dt><span class="refentrytitle"><a href="re19.html"><span>struct usb_interface_cache</span></a></span><span class="refpurpose"> — long-term representation of a device interface </span></dt><dt><span class="refentrytitle"><a href="re20.html"><span>struct usb_host_config</span></a></span><span class="refpurpose"> — representation of a device's configuration </span></dt><dt><span class="refentrytitle"><a href="re21.html"><span>struct usb_device</span></a></span><span class="refpurpose"> — kernel's representation of a USB device </span></dt><dt><span class="refentrytitle"><a href="re22.html"><span>usb_interface_claimed</span></a></span><span class="refpurpose"> — returns true iff an interface is claimed </span></dt><dt><span class="refentrytitle"><a href="re23.html"><span>usb_make_path</span></a></span><span class="refpurpose"> — returns stable device path in the usb tree </span></dt><dt><span class="refentrytitle"><a href="re24.html"><span>USB_DEVICE</span></a></span><span class="refpurpose"> — macro used to describe a specific usb device </span></dt><dt><span class="refentrytitle"><a href="re25.html"><span>USB_DEVICE_VER</span></a></span><span class="refpurpose"> — describe a specific usb device with a version range </span></dt><dt><span class="refentrytitle"><a href="re26.html"><span>USB_DEVICE_INTERFACE_PROTOCOL</span></a></span><span class="refpurpose"> — describe a usb device with a specific interface protocol </span></dt><dt><span class="refentrytitle"><a href="re27.html"><span>USB_DEVICE_INFO</span></a></span><span class="refpurpose"> — macro used to describe a class of usb devices </span></dt><dt><span class="refentrytitle"><a href="re28.html"><span>USB_INTERFACE_INFO</span></a></span><span class="refpurpose"> — macro used to describe a class of usb interfaces </span></dt><dt><span class="refentrytitle"><a href="re29.html"><span>USB_DEVICE_AND_INTERFACE_INFO</span></a></span><span class="refpurpose"> — describe a specific usb device with a class of usb interfaces </span></dt><dt><span class="refentrytitle"><a href="re30.html"><span>struct usbdrv_wrap</span></a></span><span class="refpurpose"> — wrapper for driver-model structure </span></dt><dt><span class="refentrytitle"><a href="re31.html"><span>struct usb_driver</span></a></span><span class="refpurpose"> — identifies USB interface driver to usbcore </span></dt><dt><span class="refentrytitle"><a href="re32.html"><span>struct usb_device_driver</span></a></span><span class="refpurpose"> — identifies USB device driver to usbcore </span></dt><dt><span class="refentrytitle"><a href="re33.html"><span>struct usb_class_driver</span></a></span><span class="refpurpose"> — identifies a USB driver that wants to use the USB major number </span></dt><dt><span class="refentrytitle"><a href="re34.html"><span>struct urb</span></a></span><span class="refpurpose"> — USB Request Block </span></dt><dt><span class="refentrytitle"><a href="re35.html"><span>usb_fill_control_urb</span></a></span><span class="refpurpose"> — initializes a control urb </span></dt><dt><span class="refentrytitle"><a href="re36.html"><span>usb_fill_bulk_urb</span></a></span><span class="refpurpose"> — macro to help initialize a bulk urb </span></dt><dt><span class="refentrytitle"><a href="re37.html"><span>usb_fill_int_urb</span></a></span><span class="refpurpose"> — macro to help initialize a interrupt urb </span></dt><dt><span class="refentrytitle"><a href="re38.html"><span>usb_urb_dir_in</span></a></span><span class="refpurpose"> — check if an URB describes an IN transfer </span></dt><dt><span class="refentrytitle"><a href="re39.html"><span>usb_urb_dir_out</span></a></span><span class="refpurpose"> — check if an URB describes an OUT transfer </span></dt><dt><span class="refentrytitle"><a href="re40.html"><span>struct usb_sg_request</span></a></span><span class="refpurpose"> — support for scatter/gather I/O </span></dt></dl></dd><dt><span class="chapter"><a href="ch05.html">5. USB Core APIs</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="re41.html"><span>usb_init_urb</span></a></span><span class="refpurpose"> — initializes a urb so that it can be used by a USB driver </span></dt><dt><span class="refentrytitle"><a href="re42.html"><span>usb_alloc_urb</span></a></span><span class="refpurpose"> — creates a new urb for a USB driver to use </span></dt><dt><span class="refentrytitle"><a href="re43.html"><span>usb_free_urb</span></a></span><span class="refpurpose"> — frees the memory used by a urb when all users of it are finished </span></dt><dt><span class="refentrytitle"><a href="re44.html"><span>usb_get_urb</span></a></span><span class="refpurpose"> — increments the reference count of the urb </span></dt><dt><span class="refentrytitle"><a href="re45.html"><span>usb_anchor_urb</span></a></span><span class="refpurpose"> — anchors an URB while it is processed </span></dt><dt><span class="refentrytitle"><a href="re46.html"><span>usb_unanchor_urb</span></a></span><span class="refpurpose"> — unanchors an URB </span></dt><dt><span class="refentrytitle"><a href="re47.html"><span>usb_submit_urb</span></a></span><span class="refpurpose"> — issue an asynchronous transfer request for an endpoint </span></dt><dt><span class="refentrytitle"><a href="re48.html"><span>usb_unlink_urb</span></a></span><span class="refpurpose"> — abort/cancel a transfer request for an endpoint </span></dt><dt><span class="refentrytitle"><a href="re49.html"><span>usb_kill_urb</span></a></span><span class="refpurpose"> — cancel a transfer request and wait for it to finish </span></dt><dt><span class="refentrytitle"><a href="re50.html"><span>usb_poison_urb</span></a></span><span class="refpurpose"> — reliably kill a transfer and prevent further use of an URB </span></dt><dt><span class="refentrytitle"><a href="re51.html"><span>usb_kill_anchored_urbs</span></a></span><span class="refpurpose"> — cancel transfer requests en masse </span></dt><dt><span class="refentrytitle"><a href="re52.html"><span>usb_poison_anchored_urbs</span></a></span><span class="refpurpose"> — cease all traffic from an anchor </span></dt><dt><span class="refentrytitle"><a href="re53.html"><span>usb_unpoison_anchored_urbs</span></a></span><span class="refpurpose"> — let an anchor be used successfully again </span></dt><dt><span class="refentrytitle"><a href="re54.html"><span>usb_unlink_anchored_urbs</span></a></span><span class="refpurpose"> — asynchronously cancel transfer requests en masse </span></dt><dt><span class="refentrytitle"><a href="re55.html"><span>usb_wait_anchor_empty_timeout</span></a></span><span class="refpurpose"> — wait for an anchor to be unused </span></dt><dt><span class="refentrytitle"><a href="re56.html"><span>usb_get_from_anchor</span></a></span><span class="refpurpose"> — get an anchor's oldest urb </span></dt><dt><span class="refentrytitle"><a href="re57.html"><span>usb_scuttle_anchored_urbs</span></a></span><span class="refpurpose"> — unanchor all an anchor's urbs </span></dt><dt><span class="refentrytitle"><a href="re58.html"><span>usb_anchor_empty</span></a></span><span class="refpurpose"> — is an anchor empty </span></dt><dt><span class="refentrytitle"><a href="re59.html"><span>usb_control_msg</span></a></span><span class="refpurpose"> — Builds a control urb, sends it off and waits for completion </span></dt><dt><span class="refentrytitle"><a href="re60.html"><span>usb_interrupt_msg</span></a></span><span class="refpurpose"> — Builds an interrupt urb, sends it off and waits for completion </span></dt><dt><span class="refentrytitle"><a href="re61.html"><span>usb_bulk_msg</span></a></span><span class="refpurpose"> — Builds a bulk urb, sends it off and waits for completion </span></dt><dt><span class="refentrytitle"><a href="re62.html"><span>usb_sg_init</span></a></span><span class="refpurpose"> — initializes scatterlist-based bulk/interrupt I/O request </span></dt><dt><span class="refentrytitle"><a href="re63.html"><span>usb_sg_wait</span></a></span><span class="refpurpose"> — synchronously execute scatter/gather request </span></dt><dt><span class="refentrytitle"><a href="re64.html"><span>usb_sg_cancel</span></a></span><span class="refpurpose"> — stop scatter/gather i/o issued by <code class="function">usb_sg_wait</code> </span></dt><dt><span class="refentrytitle"><a href="re65.html"><span>usb_get_descriptor</span></a></span><span class="refpurpose"> — issues a generic GET_DESCRIPTOR request </span></dt><dt><span class="refentrytitle"><a href="re66.html"><span>usb_string</span></a></span><span class="refpurpose"> — returns UTF-8 version of a string descriptor </span></dt><dt><span class="refentrytitle"><a href="re67.html"><span>usb_get_status</span></a></span><span class="refpurpose"> — issues a GET_STATUS call </span></dt><dt><span class="refentrytitle"><a href="re68.html"><span>usb_clear_halt</span></a></span><span class="refpurpose"> — tells device to clear endpoint halt/stall condition </span></dt><dt><span class="refentrytitle"><a href="re69.html"><span>usb_reset_endpoint</span></a></span><span class="refpurpose"> — Reset an endpoint's state. </span></dt><dt><span class="refentrytitle"><a href="re70.html"><span>usb_set_interface</span></a></span><span class="refpurpose"> — Makes a particular alternate setting be current </span></dt><dt><span class="refentrytitle"><a href="re71.html"><span>usb_reset_configuration</span></a></span><span class="refpurpose"> — lightweight device reset </span></dt><dt><span class="refentrytitle"><a href="re72.html"><span>usb_driver_set_configuration</span></a></span><span class="refpurpose"> — Provide a way for drivers to change device configurations </span></dt><dt><span class="refentrytitle"><a href="re73.html"><span>usb_register_dev</span></a></span><span class="refpurpose"> — register a USB device, and ask for a minor number </span></dt><dt><span class="refentrytitle"><a href="re74.html"><span>usb_deregister_dev</span></a></span><span class="refpurpose"> — deregister a USB device's dynamic minor. </span></dt><dt><span class="refentrytitle"><a href="re75.html"><span>usb_driver_claim_interface</span></a></span><span class="refpurpose"> — bind a driver to an interface </span></dt><dt><span class="refentrytitle"><a href="re76.html"><span>usb_driver_release_interface</span></a></span><span class="refpurpose"> — unbind a driver from an interface </span></dt><dt><span class="refentrytitle"><a href="re77.html"><span>usb_match_id</span></a></span><span class="refpurpose"> — find first usb_device_id matching device or interface </span></dt><dt><span class="refentrytitle"><a href="re78.html"><span>usb_register_device_driver</span></a></span><span class="refpurpose"> — register a USB device (not interface) driver </span></dt><dt><span class="refentrytitle"><a href="re79.html"><span>usb_deregister_device_driver</span></a></span><span class="refpurpose"> — unregister a USB device (not interface) driver </span></dt><dt><span class="refentrytitle"><a href="re80.html"><span>usb_register_driver</span></a></span><span class="refpurpose"> — register a USB interface driver </span></dt><dt><span class="refentrytitle"><a href="re81.html"><span>usb_deregister</span></a></span><span class="refpurpose"> — unregister a USB interface driver </span></dt><dt><span class="refentrytitle"><a href="re82.html"><span>usb_autopm_put_interface</span></a></span><span class="refpurpose"> — decrement a USB interface's PM-usage counter </span></dt><dt><span class="refentrytitle"><a href="re83.html"><span>usb_autopm_put_interface_async</span></a></span><span class="refpurpose"> — decrement a USB interface's PM-usage counter </span></dt><dt><span class="refentrytitle"><a href="re84.html"><span>usb_device_autosuspend_enable</span></a></span><span class="refpurpose"> — enable autosuspend on a device </span></dt><dt><span class="refentrytitle"><a href="re85.html"><span>usb_autopm_get_interface</span></a></span><span class="refpurpose"> — increment a USB interface's PM-usage counter </span></dt><dt><span class="refentrytitle"><a href="re86.html"><span>usb_autopm_get_interface_async</span></a></span><span class="refpurpose"> — increment a USB interface's PM-usage counter </span></dt><dt><span class="refentrytitle"><a href="re87.html"><span>usb_autopm_set_interface</span></a></span><span class="refpurpose"> — set a USB interface's autosuspend state </span></dt><dt><span class="refentrytitle"><a href="re88.html"><span>usb_ifnum_to_if</span></a></span><span class="refpurpose"> — get the interface object with a given interface number </span></dt><dt><span class="refentrytitle"><a href="re89.html"><span>usb_altnum_to_altsetting</span></a></span><span class="refpurpose"> — get the altsetting structure with a given alternate setting number. </span></dt><dt><span class="refentrytitle"><a href="re90.html"><span>usb_find_interface</span></a></span><span class="refpurpose"> — find usb_interface pointer for driver and device </span></dt><dt><span class="refentrytitle"><a href="re91.html"><span>usb_get_dev</span></a></span><span class="refpurpose"> — increments the reference count of the usb device structure </span></dt><dt><span class="refentrytitle"><a href="re92.html"><span>usb_put_dev</span></a></span><span class="refpurpose"> — release a use of the usb device structure </span></dt><dt><span class="refentrytitle"><a href="re93.html"><span>usb_get_intf</span></a></span><span class="refpurpose"> — increments the reference count of the usb interface structure </span></dt><dt><span class="refentrytitle"><a href="re94.html"><span>usb_put_intf</span></a></span><span class="refpurpose"> — release a use of the usb interface structure </span></dt><dt><span class="refentrytitle"><a href="re95.html"><span>usb_lock_device_for_reset</span></a></span><span class="refpurpose"> — cautiously acquire the lock for a usb device structure </span></dt><dt><span class="refentrytitle"><a href="re96.html"><span>usb_get_current_frame_number</span></a></span><span class="refpurpose"> — return current bus frame number </span></dt><dt><span class="refentrytitle"><a href="re97.html"><span>usb_buffer_alloc</span></a></span><span class="refpurpose"> — allocate dma-consistent buffer for URB_NO_xxx_DMA_MAP </span></dt><dt><span class="refentrytitle"><a href="re98.html"><span>usb_buffer_free</span></a></span><span class="refpurpose"> — free memory allocated with <code class="function">usb_buffer_alloc</code> </span></dt><dt><span class="refentrytitle"><a href="re99.html"><span>usb_buffer_map</span></a></span><span class="refpurpose"> — create DMA mapping(s) for an urb </span></dt><dt><span class="refentrytitle"><a href="re100.html"><span>usb_buffer_dmasync</span></a></span><span class="refpurpose"> — synchronize DMA and CPU view of buffer(s) </span></dt><dt><span class="refentrytitle"><a href="re101.html"><span>usb_buffer_unmap</span></a></span><span class="refpurpose"> — free DMA mapping(s) for an urb </span></dt><dt><span class="refentrytitle"><a href="re102.html"><span>usb_buffer_map_sg</span></a></span><span class="refpurpose"> — create scatterlist DMA mapping(s) for an endpoint </span></dt><dt><span class="refentrytitle"><a href="re103.html"><span>usb_buffer_dmasync_sg</span></a></span><span class="refpurpose"> — synchronize DMA and CPU view of scatterlist buffer(s) </span></dt><dt><span class="refentrytitle"><a href="re104.html"><span>usb_buffer_unmap_sg</span></a></span><span class="refpurpose"> — free DMA mapping(s) for a scatterlist </span></dt><dt><span class="refentrytitle"><a href="re105.html"><span>usb_hub_clear_tt_buffer</span></a></span><span class="refpurpose"> — clear control/bulk TT state in high speed hub </span></dt><dt><span class="refentrytitle"><a href="re106.html"><span>usb_set_device_state</span></a></span><span class="refpurpose"> — change a device's current state (usbcore, hcds) </span></dt><dt><span class="refentrytitle"><a href="re107.html"><span>usb_root_hub_lost_power</span></a></span><span class="refpurpose"> — called by HCD if the root hub lost Vbus power </span></dt><dt><span class="refentrytitle"><a href="re108.html"><span>usb_reset_device</span></a></span><span class="refpurpose"> — warn interface drivers and perform a USB port reset </span></dt><dt><span class="refentrytitle"><a href="re109.html"><span>usb_queue_reset_device</span></a></span><span class="refpurpose"> — Reset a USB device from an atomic context </span></dt></dl></dd><dt><span class="chapter"><a href="ch06.html">6. Host Controller APIs</a></span></dt><dd><dl><dt><span class="refentrytitle"><a href="re110.html"><span>usb_calc_bus_time</span></a></span><span class="refpurpose"> — approximate periodic transaction time in nanoseconds </span></dt><dt><span class="refentrytitle"><a href="re111.html"><span>usb_hcd_link_urb_to_ep</span></a></span><span class="refpurpose"> — add an URB to its endpoint queue </span></dt><dt><span class="refentrytitle"><a href="re112.html"><span>usb_hcd_check_unlink_urb</span></a></span><span class="refpurpose"> — check whether an URB may be unlinked </span></dt><dt><span class="refentrytitle"><a href="re113.html"><span>usb_hcd_unlink_urb_from_ep</span></a></span><span class="refpurpose"> — remove an URB from its endpoint queue </span></dt><dt><span class="refentrytitle"><a href="re114.html"><span>usb_hcd_giveback_urb</span></a></span><span class="refpurpose"> — return URB from HCD to device driver </span></dt><dt><span class="refentrytitle"><a href="re115.html"><span>usb_hcd_resume_root_hub</span></a></span><span class="refpurpose"> — called by HCD to resume its root hub </span></dt><dt><span class="refentrytitle"><a href="re116.html"><span>usb_bus_start_enum</span></a></span><span class="refpurpose"> — start immediate enumeration (for OTG) </span></dt><dt><span class="refentrytitle"><a href="re117.html"><span>usb_hc_died</span></a></span><span class="refpurpose"> — report abnormal shutdown of a host controller (bus glue) </span></dt><dt><span class="refentrytitle"><a href="re118.html"><span>usb_create_hcd</span></a></span><span class="refpurpose"> — create and initialize an HCD structure </span></dt><dt><span class="refentrytitle"><a href="re119.html"><span>usb_add_hcd</span></a></span><span class="refpurpose"> — finish generic HCD structure initialization and register </span></dt><dt><span class="refentrytitle"><a href="re120.html"><span>usb_remove_hcd</span></a></span><span class="refpurpose"> — shutdown processing for generic HCDs </span></dt><dt><span class="refentrytitle"><a href="re121.html"><span>usb_hcd_pci_probe</span></a></span><span class="refpurpose"> — initialize PCI-based HCDs </span></dt><dt><span class="refentrytitle"><a href="re122.html"><span>usb_hcd_pci_remove</span></a></span><span class="refpurpose"> — shutdown processing for PCI-based HCDs </span></dt><dt><span class="refentrytitle"><a href="re123.html"><span>usb_hcd_pci_shutdown</span></a></span><span class="refpurpose"> — shutdown host controller </span></dt><dt><span class="refentrytitle"><a href="re124.html"><span>hcd_buffer_create</span></a></span><span class="refpurpose"> — initialize buffer pools </span></dt><dt><span class="refentrytitle"><a href="re125.html"><span>hcd_buffer_destroy</span></a></span><span class="refpurpose"> — deallocate buffer pools </span></dt></dl></dd><dt><span class="chapter"><a href="ch07.html">7. The USB Filesystem (usbfs)</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch07.html#usbfs-files">What files are in "usbfs"?</a></span></dt><dt><span class="sect1"><a href="ch07s02.html">Mounting and Access Control</a></span></dt><dt><span class="sect1"><a href="ch07s03.html">/proc/bus/usb/devices</a></span></dt><dt><span class="sect1"><a href="ch07s04.html">/proc/bus/usb/BBB/DDD</a></span></dt><dt><span class="sect1"><a href="ch07s05.html">Life Cycle of User Mode Drivers</a></span></dt><dt><span class="sect1"><a href="ch07s06.html">The ioctl() Requests</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch07s06.html#usbfs-mgmt">Management/Status Requests</a></span></dt><dt><span class="sect2"><a href="ch07s06.html#usbfs-sync">Synchronous I/O Support</a></span></dt><dt><span class="sect2"><a href="ch07s06.html#usbfs-async">Asynchronous I/O Support</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"> </td><td width="40%" align="right" valign="top"> Chapter 1. Introduction to USB on Linux</td></tr></table></div></body></html>