代码之美 - 16Linux内核驱动模型:协作的好处
来源:互联网 发布:linux df命令卡住 编辑:程序博客网 时间:2024/06/07 01:36
这章篇幅不大,可读得费劲。
上来就有两句话没看懂:在2.4版本的内核中,每一个设备的物理部分都由一段总线特定的代码来控制。总线代码负责各种不同类型的任务,而每一种具体总线的代码之间则没有交互。
后一句的原文是:This bus code was responsible for a wide range of different tasks, and each individual bus code had no interaction with any other bus code.
这里,总线特定代码(bus-specific code)是什么意思?
然后,Greg Kroah-Hartman提出两个问题,1是在解决电源管理问题时,内核需要知道不同设备的连接关系;2是不论哪一台USB打印机先启动,两台打印机的名字永不变。
其他系统的一般解决方法,1是内核中放一个处理设备名的小数据库,2是通过文件系统中可以直接访问设备的devfs类型来导出设备的所有信息。
对Linux来说,内核里放数据库是不能接受的,同时,Linux的devfs文件系统实现中“存在一些众所周知的且难以消除的竞争条件,导致几乎所有的Linux发布的版本中都不能依赖它。”这句话怎么理解?
再然后,作者用一个“简单”的例子展现了,展现了什么呢,我觉得是展现了C语言的复杂用法。如作者所说:是的,非常强大,只要你清楚地知道你正在做什么。
不信就看看这个宏吧:
- #define container_of(ptr, type, member) ({ /
- const typeof( ((type *)0) ->member ) * _mptr = (ptr); /
- (type *)( (char *)_mptr - offsetof(type, member) );})
作者通过介绍Linux内核中解决前面提到的两个问题所需的数据结构和支持函数的演变,来说明协作给Linux带来的好处,还好文末有个总结,否则我又要忘了他要说什么。
- 代码之美 - 16Linux内核驱动模型:协作的好处
- linux内核部件之---设备驱动模型的基石kobject
- linux内核部件之---设备驱动模型的基石kobject
- Linux内核之设备驱动模型
- linux内核驱动设备模型五之kobject (设备驱动模型的基石)
- linux驱动内核模型
- Linux 内核驱动模型
- 阅读linux内核代码的一大好处
- Linux内核大讲堂之设备驱动的基石驱动模型(1)
- Linux内核大讲堂之设备驱动的基石驱动模型(2)
- Linux内核大讲堂之设备驱动的基石驱动模型(3)
- Linux内核大讲堂之设备驱动的基石驱动模型(4)
- Linux内核大讲堂之设备驱动的基石驱动模型(5)
- Linux内核大讲堂之设备驱动的基石驱动模型(6)
- Linux内核大讲堂之设备驱动的基石驱动模型(7)
- Linux内核大讲堂之设备驱动的基石驱动模型(1)
- Linux内核大讲堂之设备驱动的基石驱动模型(2)
- Linux内核大讲堂之设备驱动的基石驱动模型(3)
- java收藏三
- office outlook 2003 遇到的问题
- 是走是留??
- asp.net不同页面传值的几种方式
- SQL存储过程编写经验和优化措施
- 代码之美 - 16Linux内核驱动模型:协作的好处
- 用vb实现图像转换效果_vb教程
- tslib的移植
- [水晶报表]Asp.net调用水晶报表
- Oracle 学习3
- 必须掌握的八个【cmd 命令行】
- VS.NET 2005 + VSS6.0简单应用示例
- 用户控件和自定义控件异同
- JDBC连接数据库