.\" This documentation was generated from the book titled "The Linux-USB Host Side API", which is part of the Linux kernel source. .\" .\" This documentation comes with the following legal notice: .\" .\" 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. .\" .\" 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. .\" .\" 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 .\" .\" For more details see the file COPYING in the source .\" distribution of Linux. .\" .\" For comments on the formatting of this manpage, please contact Michael Still .\" This manpage has been automatically generated by docbook2man .\" from a DocBook document. This tool can be found at: .\" .\" Please send any bug reports, improvements, comments, patches, .\" etc. to Steve Cheng . .TH "USB_MAKE_PATH" "9" "07 August 2003" "" "" .SH NAME usb_make_path \- returns stable device path in the usb tree .SH SYNOPSIS .sp \fB .sp int usb_make_path (struct usb_device * \fIdev\fB, char * \fIbuf\fB, size_t \fIsize\fB); \fR .SH "ARGUMENTS" .TP \fB\fIdev\fB\fR the device whose path is being constructed .TP \fB\fIbuf\fB\fR where to put the string .TP \fB\fIsize\fB\fR how big is ``buf''? .SH "DESCRIPTION" .PP Returns length of the string (> 0) or negative if size was too small. .PP This identifier is intended to be ``stable'', reflecting physical paths in hardware such as physical bus addresses for host controllers or ports on USB hubs. That makes it stay the same until systems are physically reconfigured, by re-cabling a tree of USB devices or by moving USB host controllers. Adding and removing devices, including virtual root hubs in host controller driver modules, does not change these path identifers; neither does rebooting or re-enumerating. These are more useful identifiers than changeable (``unstable'') ones like bus numbers or device addresses. .PP With a partial exception for devices connected to USB 2.0 root hubs, these identifiers are also predictable. So long as the device tree isn't changed, plugging any USB device into a given hub port always gives it the same path. Because of the use of ``companion'' controllers, devices connected to ports on USB 2.0 root hubs (EHCI host controllers) will get one path ID if they are high speed, and a different one if they are full or low speed. .SH "ABOUT THIS DOCUMENT" .PP This documentation was generated with kernel version 2.6.0.