Linux2.6 内核提供了新的设备模型,目的是为了对计算机上的所有设备进行统一地表
和操作,包括设备本身和设备之间的连接关系。这个模型是在 分析了 PCI 和 USB 的总线
驱动过程中得到的,这两个总线类型能代表当前系统中的大多数设备类型,它们都有完善的
热挺拔机制和电源管理的支持,也都有级连机制的支持,以桥接的 PCI/USB 总线控制器的
方式可以支持更多的 PCI/USB 设备。[2] 总体来说,Linux 统一设备模型具有以下的特点,
* 代码重复最小化
* 提供诸如引用计数这样的统一机制
* 可以列举系统中所有的设备,观察它们的状态,并且查看它们连接的总线
* 可以将系统中的全部设备结构以树的形式完整、有效的展现出来-包括所有的总线和内
部连接
* 可以将设备和其对应的驱动联系起来,反之亦然
*可以将设备按照类型加以归类,比如分类为输入设备,而无需理解物理设备的拓扑结构
*可以讲设备树的叶子向其根的方向依次遍历,以保证能以正确顺序关闭各设备的电源。
最后一点是实现设备模型的最初动机。若想在内核中实现智能的电源管理,就需要来建
立表示系统中设备拓扑关系的树结构[2]。如在一个典型的 PC 系统中,中央处理器(CPU)
能直接控制的是 PCI 总线设备,而 USB 总线设备是以一个 PCI 设备(PCI-USB 桥)的形式
接入在 PCI 总线设备上,外部 USB 设备再接入在 USB 总线设备上;当计算机执行挂起
(suspend)操作时, Linux 内核应该以 “外部 USB 设备-》USB 总线设备-》PCI 总线设备” 的
顺序通知每一个设备将电源挂起;执行恢复(resume)时则以相反的顺序通知;反之如果不按
此顺序则将有设备得不到正确的电源状态变迁的通知,将无法正常工作[1]。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !