Linux设备模型
看LDD3中设备模型一章,觉得思维有些混乱。这里从整体的角度来理理思路。
本文从四个方面来总结一些内容:1.底层数据结构:kobject,kset.
2.linux设备模型层次关系:bus_type,device,device_driver.
3.集成:PCI设备驱动模型实例及设备,设备驱动注册源码的简单分析.4.面向对象的思想在linux设备模型中的应用分析.
这里出现了两个指针类型转换(通过container_of()宏实现的),然后调用platform_driver提供的probe函数。
考虑一下platform_driver的注册过程。每个驱动注册过程相同。如前面分析过的,进入到driver_register后,设备驱动device_driver层的probe将会被调用来探测设备,这个函数像上面源码所指示的那样完成类型转化调用其子类platform_driver层的probe函数来完成具体的功能。 那么,从device_driver层看来,相同的函数调用由子类来完成了不同的具体功能。这不是多态的思想么??
这里非常粗浅的分析了linux设备模型中使用C实现面向对象的三大要素(封装,继承,多态)的基本思想。用C来实现确实做的工作要多一些,不过灵活性更高了。怪不得linus炮轰C++.
"使用优秀的、高效的、系统级的和可移植的C++的唯一方式,最终还是限于使用C本身具有的所有特性。"