Linux设备驱动编程模型之上层容器篇

Linux设备驱动编程模型之上层容器篇

ID:40186315

大小:158.25 KB

页数:33页

时间:2019-07-24

Linux设备驱动编程模型之上层容器篇_第1页
Linux设备驱动编程模型之上层容器篇_第2页
Linux设备驱动编程模型之上层容器篇_第3页
Linux设备驱动编程模型之上层容器篇_第4页
Linux设备驱动编程模型之上层容器篇_第5页
资源描述:

《Linux设备驱动编程模型之上层容器篇》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Linux设备驱动编程模型之上层容器篇分类:Linux2012-10-0617:18245人阅读评论(0)收藏举报linux编程struct数据结构listnull2.6内核增加了一个引人注目的新特性——统一设备模型(device model)。设备模型提供了一个独立的机制专门来表示设备,并描述其在系统中的拓扑结构,从而使得系统具有以下优点:l        代码重复最小化。l        提供诸如引用计数这样的统一机制。l        可以列举系统中所有的设备,观察它们的状态,并且查看它们连接的总线。l        可以将系统中的全部设备结构以树的形

2、式完整、有效的展 现出来——包括所有的总线和内部连接。l        可以将设备和其对应的驱动联系起来,反之亦然。l        可以将设备按照类型加以归类,比如分类为输入设备,而无需理解物理设备的拓扑结构。l        可以沿设备树的叶子向其根的方向依次遍历,以保证能以正确顺序关闭各设备的电源。   最后一点是实现设备模型的最初动机。若想在内核中实现智能的电源管理,就需要来建立表示系统中设备拓扑关系的树结构。当在树上端的设备关闭电源时,内核必须首先关闭该设备节点以下的(处于叶子上的)设备电源。比如内核需要先关闭一个USB鼠标,然后才可关闭USB控制

3、器;同样内核也必须在关闭PCI总线前先关闭USB控制器。简而言之,若要准确而又高效的完成上述电源管理目标,内核无疑需要一颗设备树。一、原理虽然设备模型的初衷是为了方便电源管理而提供出的一种设备拓扑结构,但是,为了方便调试,设备模型的开发者决定将设备结构树导出为一个文件系统,这就是sysfs文件系统,它可以帮助用户能以一个简单文件系统的方式来观察系统中各种设备的拓扑结构。这个举措很快被证明是非常明智的,首先sysfs代替了先前处于/proc下的设备相关文件;另外它为系统对象提供了一个很有效的视图。实际上,sysfs起初被称为driverfs。最终sysfs使得

4、我们认识到一个全新的对象模型非常有利于系统。今天所有2.6内核的系统都拥有sysfs文件系统,而且几乎都毫无例外的将其挂载。             图一是挂载于/sys目录下的sysfs文件系统的局部视图。    /sys     

5、—block/     

6、   

7、–fd0     

8、   

9、–hda     

10、   

11、–dev     

12、   

13、–device->../../devices/pci0000:00/0000:00:1f.1/ide0/0.0     

14、    …     

15、–bus/     

16、–class/     

17、–devices/

18、     

19、–firmware/     

20、–power/     

21、–module/Sysfs的根目录下包含了七个目录:block, bus, class,devices, firmware, ,module和power。block目录下的每个子目录都对应着系统中的一个块设备。反过来,每个目录下又都包含了该块设备的所有分区。bus目录提供了一个系统总线视图。class目录包含了以高层功能逻辑组织起来的系统设备视图。devices目录是系统中设备拓扑结构视图,它直接映射出了内核中设备结构体的组织层次。firmware目录包含了一些诸如ACPI,EDD,EFI

22、等低层子系统的特殊树。power目录包含了系统范围的电源管理数据。其中最重要的目录是devices,该目录将设备模型导出到用户空间。目录结构就是系统中实际的设备拓扑。其它目录中的很多数据都是将devices目录下的数据加以转换加工而得。比如,/sys/class/net/目录是以注册网络接口这一高层概念来组织设备关系的,在这个目中可能会有目录eth0,它里面包含的devices文件其实就是一个指回到devices下实际设备目录的符号连接。   随便看看任何你可访问到的Linux系统,这种系统设备视图相当准确和漂亮,而且可以看到class中的高层概念与devi

23、ces中的低层物理设备,以及bus中的实际驱动程序之间互相联络是非常广泛的。Sysfs文件系统的目标就是要展现设备驱动模型组件之间的层次关系。在Linux中,sysfs文件系统被安装于/sys目录下:mount -t sysfs sysfs /sys/sys     

24、—block/     

25、   

26、–fd0     

27、   

28、–hda     

29、   

30、–dev     

31、   

32、–device->../../devices/pci0000:00/0000:00:1f.1/ide0/0.0     

33、    …     

34、–bus/     

35、–clas

36、s/     

37、–devices/     

38、–fi

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。