linux内核用C语言实现了C++面向对象的大部分特性:封装,继承,多态。在看内核的过程中,开始追寻其中的设计思想,封装、继承、多态。恰好今天又在看Linux设备模型,找了很多资料。总结如下:

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)”的文章:(题外话:引入这个设备模型对节能很有用)

最新文章

  1. json数组,随便测试
  2. Myeclipse集成Jboss 6.1控制台不输出日志信息
  3. Windows Embedded Compact 2013 安装体验
  4. WinAPI——谐振动的合成
  5. [汇编学习笔记][第五章[BX]和loop指令]
  6. ASP.NET导入Excel到SQL数据库
  7. kafka集群配置与测试
  8. 【项目笔记】【bug】数组空指针异常
  9. MySQL统计函数记录——按月、按季度、按日、时间段统计
  10. 第十五章:Oracle12c 数据库 警告日志
  11. js实现多行文本溢出省略
  12. 如何使用openscad绘制一个简单的键帽.
  13. 原生js获取子元素、给元素增加div
  14. Python 全栈开发四 python基础 函数
  15. mAP的计算
  16. python高速排序
  17. LinuxMint下tty.js的安装指南
  18. mysql 开启profiling
  19. tomcat源码调试2
  20. sqlmap的简要使用方法

热门文章

  1. Java_jdbc 基础笔记之十 数据库连接 (ResultSetMetaData 类)
  2. mysql增删改查sql语句
  3. js写评价的星星
  4. Java 使用ZkClient操作Zookeeper
  5. redis连接池——JedisPool和JedisCluster的介绍与使用
  6. EasyRTMP推送扩展支持HEVC(H265) RTMP推送之Metadata结构填写详解
  7. 手工下载php的composer软件包,如何让项目自动加载包里的类
  8. [LeetCode] 188. Best Time to Buy and Sell Stock IV 买卖股票的最佳时间 IV
  9. [LeetCode] 499. The Maze III 迷宫 III
  10. C# 与 .NET Framework 对应关系