USB_MAKE_PATH

Section: Host-Side Data Types and Macro (9)
Updated: February 2011
Index Return to Main Contents
 

NAME

usb_make_path - returns stable device path in the usb tree  

SYNOPSIS

int usb_make_path(struct usb_device * dev, char * buf, size_t size);
 

ARGUMENTS

dev

the device whose path is being constructed

buf

where to put the string

size

how big is lqbufrq?
 

DESCRIPTION

Returns length of the string (> 0) or negative if size was too small.

This identifier is intended to be lqstablerq, 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 (lqunstablerq) ones like bus numbers or device addresses.

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

COPYRIGHT