当前位置:嗨网首页>书籍在线阅读

04-udev的默认行为

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

19.3 udev的默认行为

你也许会惊讶地发现代码清单19-1中uevent是内核发送的众多uevent中的第一条。代码清单19-2显示了当插入4口USB集线器时内核生成的每个 uevent 。这个代码清单是由以下udev命令生成的:

584.png 代码清单19-2 插入4口集线器时内核生成的 uevent

585.png 注意,我们已经去除了时间戳并用×代替,以便这个代码清单能够适应页宽,同时也让我们阅读起来更加容易。实际上,每个 uevent 都带有一个类似代码清单19-1所示的时间戳。可以看到,在插入4口USB集线器时内核生成了5个uevent。它们代表了USB设备层次结构中的各种成员。第18章介绍了USB及其架构。

代码清单19-3中显示了到此为止udev已经创建的设备节点。这些设备节点位于/dev目录中,它们代表了udev的默认行为。在这个介绍性的例子中,我们没有定制任何udev规则。

代码清单19-3 udev创建的初始USB设备

586.png 图19-1显示了与代码清单19-3相对应的硬件配置。

587.png

图19-1 4口USB集线器

代码清单19-3中的第一行代表BeagleBoard开发板上的主机控制器。正如我们在第18章中所学习到的,可以通过查看它在/sys中的属性来了解它。它是德州仪器OMAP3530芯片中内置的高速双速率USB控制器(一般被称作USB主机控制器)。使用以下命令查看了/sys中的设备属性:

588.png 代码清单19-3中接下来的3行代表内部的单端口集线器,在USB架构中它总是和主机控制器关联在一起。这就是第18章中所讨论的根集线器。可以将开发板上的物理USB连接器看成这个单口集线器。正如第18章所讨论的,USB设备中包含接口和端点等逻辑实体。名为usbdev1.1的设备代表USB接口,而名为usbdev1.1_ep00和usbdev1.1_ep81的设备则代表集线器中的逻辑端点——它们是实际在USB总线上进行通信的逻辑实体。

当我们将4口集线器插入BeagleBoard开发板的USB端口中后,udev默认创建了代码清单19-3中的最后3个设备。注意这些设备节点的编号,名称中的.2代表级联的USB集线器层次结构中的第二个集线器。

你也许想知道是否有其他名称能够更好地代表这类设备。如果应用程序需要直接使用某个设备,比如USB鼠标,像usbdev1.3_ep00[2]这样的名称是不易于使用的。这时,udev的规则就派上用场了。

[2] 如果将鼠标(或其他设备)直接插入到4口USB集线器中,设备节点的名称就会是这样。