linux设备模型与内核中的面向对象思想
2013-12-06 11:49
316 查看
linux内核用C语言实现了C++面向对象的大部分特性:封装,继承,多态。在看内核的过程中,开始追寻其中的设计思想,封装、继承、多态。恰好今天又在看Linux设备模型,找了很多资料。总结如下:
1、linux设备模型总结:点击打开链接
这篇文章对设备模型的讲解比较到位,但是没有图示清楚,如果需要形象理解,则可以参考我的前一篇文章:linux对象系统。在这篇文章的最后,利用pci_register_driver的注册过程和platform_register_driver,分别讲解了继承和多态思想的体现。note:必须仔细查看源代码才能理解。继承就是在子类里面包含父类的一个实例;多态就是在子类里面填充父类实例中的通用函数指针,将它们指向具体的函数。
继承关键代码:pci_register_driver -----> driver_register -----> kobject_register
多态关键代码:
这篇文章举了一些新的例子,包括文件系统那块;但是最后的例子和上文一样。
3、找到一篇国内的论文:《Linux内核中面向对象的研究与应用》还没有看。想来,这种文章在国外也应该有,回头再仔细搜索一下。其实,面向对象思想,乃至设计模式,都不会局限于具体的语言。
4、Linux设备驱动模型初探:点击打开链接
这篇文章讲解的内容与上一篇文章略有重复,其实我们就是应该做大量的阅读,同时做相应的思考,从不同的文章中获取养分。
5、Linux内核之旅中有一系列讲解“统一设备模型(device
model)”的文章:(题外话:引入这个设备模型对节能很有用)
Linux内核驱动模型(一)
Linux内核驱动模型(二)
文件系统之视图
核心对象之演绎--kobject
1、linux设备模型总结:点击打开链接
这篇文章对设备模型的讲解比较到位,但是没有图示清楚,如果需要形象理解,则可以参考我的前一篇文章:linux对象系统。在这篇文章的最后,利用pci_register_driver的注册过程和platform_register_driver,分别讲解了继承和多态思想的体现。note:必须仔细查看源代码才能理解。继承就是在子类里面包含父类的一个实例;多态就是在子类里面填充父类实例中的通用函数指针,将它们指向具体的函数。
继承关键代码:pci_register_driver -----> driver_register -----> kobject_register
多态关键代码:
/** * platform_driver_register * @drv: platform driver structure */ int platform_driver_register(struct platform_driver *drv) { drv->driver.bus = &platform_bus_type; /* 从device_driver层次看来,通过相同的接口probe调用,到这里 完成具体的platform_drv_probe操作,这是多态思想的体现*/ if (drv->probe) drv->driver.probe = platform_drv_probe; if (drv->remove) drv->driver.remove = platform_drv_remove; if (drv->shutdown) drv->driver.shutdown = platform_drv_shutdown; if (drv->suspend) drv->driver.suspend = platform_drv_suspend; if (drv->resume) drv->driver.resume = platform_drv_resume; return driver_register(&drv->driver); }2、 C风格的面向对象---linux内核学习:点击打开链接
这篇文章举了一些新的例子,包括文件系统那块;但是最后的例子和上文一样。
3、找到一篇国内的论文:《Linux内核中面向对象的研究与应用》还没有看。想来,这种文章在国外也应该有,回头再仔细搜索一下。其实,面向对象思想,乃至设计模式,都不会局限于具体的语言。
4、Linux设备驱动模型初探:点击打开链接
这篇文章讲解的内容与上一篇文章略有重复,其实我们就是应该做大量的阅读,同时做相应的思考,从不同的文章中获取养分。
5、Linux内核之旅中有一系列讲解“统一设备模型(device
model)”的文章:(题外话:引入这个设备模型对节能很有用)
Linux内核驱动模型(一)
Linux内核驱动模型(二)
文件系统之视图
核心对象之演绎--kobject
相关文章推荐
- linux设备驱动归纳总结(八):3.设备管理的分层与面向对象思想
- 用面向对象思想分析linux字符设备驱动开发
- linux设备模型之内核对象kobject
- linux内核设计与实现思想 – C风格的面向对象
- 【Linux开发】linux设备驱动归纳总结(三):3.设备驱动面向对象思想和lseek的实现
- linux设备驱动归纳总结(三):3面向对象思想和lseek
- 【Linux开发】linux设备驱动归纳总结(八):3.设备管理的分层与面向对象思想
- linux设备模型之内核集合、内核对象
- linux内核设计与实现思想 – C风格的面向对象
- linux内核部件分析(十)——设备驱动模型之class
- Linux内核大讲堂 (一) 设备驱动的基石驱动模型(5)
- Linux设备模型分析之kobject(基于3.10.1内核)
- [Linux] 内核中 SPI 设备驱动模型(Platform设备驱动方式)
- Linux内核大讲堂之设备驱动的基石驱动模型(5)
- linux内核组件分析之--设备驱动模型之bus
- linux2.6内核文件系统与设备模型
- Linux内核大讲堂 (一) 设备驱动的基石驱动模型(6)
- linux内核部件分析之----设备驱动模型之device
- Linux 2.6内核的设备模型
- Linux内核大讲堂之设备驱动的基石驱动模型(6)