第十三章
330
设备(用struct usb_device表示)还是单独的USB接口(用struct usb_interface
表示),在 sysfs 中均表示为单独的设备(这是因为这些结构体都包含一个 struct
device 结构体)。以仅包含一个 USB 接口的简易 USB 鼠标为例,下面是该设备的sysfs
目录树:
/sys/devices/pci0000:00/0000:00:09.0/usb2/2-1
|-- 2-1:1.0
| |-- bAlternateSetting
| |-- bInterfaceClass
| |-- bInterfaceNumber
| |-- bInterfaceProtocol
| |-- bInterfaceSubClass
| |-- bNumEndpoints
| |-- detach_state
| |-- iInterface
| `-- power
| `-- state
|-- bConfigurationValue
|-- bDeviceClass
|-- bDeviceProtocol
|-- bDeviceSubClass
|-- bMaxPower
|-- bNumConfigurations
|-- bNumInterfaces
|-- bcdDevice
|-- bmAttributes
|-- detach_state
|-- devnum
|-- idProduct
|-- idVendor
|-- maxchild
|-- power
| `-- state
|-- speed
`-- version
struct usb_device 表示为目录树中的:
/sys/devices/pci0000:00/0000:00:09.0/usb2/2-1
而鼠标的 USB 接口(USB 鼠标驱动程序所绑定的接口)位于如下目录:
/sys/devices/pci0000:00/0000:00:09.0/usb2/2-1/2-1:1.0
我们将描述内核如何分类 USB 设备,以帮助理解上面这些长长的设备路径名的含义。
第一个 USB 设备是一个根集线器(root hub)。这是一个 USB 控制器,通常包含在一个
PCI 设备中。之所以这样命名该控制器,是因为它控制着连接到其上的整个 USB 总线。
该控制器是连接 PCI 总线和 USB 总线的桥,也是该总线上的第一个 USB 设备。