USB设备在sysfs中名字的含义
ldd3/ch13
先贴一张usb设备在sysfs中表示的截图:
这样的一个列表一般都称为树(tree),怎么理解呢?咋看上去毫无章法可言,不能读懂的。
在usb驱动中,一个usb设备有一个usb_device结构表示,而usb设备所拥有的功能则用usb_interface结构表示,实际上,一个usb设备是有多个功能的,所以就有多个usb_interface。在sysfs中,usb设备或者是单个接口都是作为设备对待。
struct usb_device在树中的表示:
/sys/devices/pci0000:00/0000:00:09.0/usb2/2-1
struct usb_interface在树中的表示:
/sys/devices/pci0000:00/0000:00:09.0/usb2/2-1/2-1:1.0
如何理解这一长串的路径呢?
root hub是第一个usb设备, root hub是内嵌于主机控制器的,这个主机控制器是个pci设备,它是pci总线和usb总线之间的桥梁,同时它的root hub也是usb总线的第一个设备。每个root hub都被usb core 分配一个唯一的数字,在我们的例子中,这个数字是2,被称为usb2,表示第二个注册到usb core。每个usb设备的命名规则是:以它所在的root hub号开始,然后是一个‘-’字符,再接链接的hub port号,在我们的例子中就是2-1,所以usb设备的完整表示就是
/sys/devices/pci0000:00/0000:00:09.0/usb2/2-1
usb_interface的命名: 先是设备的名字,然后是一个冒号,再接配置号,最后是接口号,接口号从0开始算起,所以usb_interface的表示是:
/sys/devices/pci0000:00/0000:00:09.0/usb2/2-1/2-1:1.0
概括来说,USB sysfs的命名规则就是:
root_hub-hub_port:config.interface
如果多级hub连接:
root_hub-hub_port-hub_port:config.interface
如此,上面那张截图我们这能理解了,: )