USB设备在sysfs中名字的含义

ddv posted @ 2009年9月30日 18:58 in Linux driver , 2487 阅读

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

 

如此,上面那张截图我们这能理解了,: )


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter