linux设备模型与内核中的面向对象思想

原创 2013年12月06日 11:49:44

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

面向对象地分析Linux内核设备驱动(1):——Linux内核驱动中面向对象的基本规则和实现方法

Linux内核驱动中面向对象的基本规则和实现方法 - 内核版本 Linux Kernel 2.6.34, 与 Robert.Love的《Linux Kernel Development...
  • zhou_chenz
  • zhou_chenz
  • 2017年02月07日 00:08
  • 1428

linux c面向对象分析

我写驱动从来不理解驱动的代码流程,就是根据框架,就像堆积木直接写好。 最近好好的看了看linux内核的源代码,以及高焕堂先生的UML+OOPC嵌入式C语言开发精讲 ,才发现原来c功能这么强大。 举例 ...
  • qingfengtsing
  • qingfengtsing
  • 2015年07月10日 19:13
  • 812

linux内核设计与实现思想 – C风格的面向对象

原文链接:linux内核学习 – C风格的面向对象     linux内核大量使用面向对象的编码风格。然而linux内核是完全使用C写就。学习他们如何使用C模拟面向对象机制很有意思。这种做法...
  • HanTangSongMing
  • HanTangSongMing
  • 2012年10月14日 08:27
  • 4218

如何在C语言里实现“面向对象编程”

有人认为面向对象是C++/Java这种高级语言的专利,实际不是这样,面向对象作为一种设计方法,是不限制语言的。只能说,用C++/Java这种语法来实现面向对象会更容易、更自然一些。 在本节中,就展示如...
  • iamshaofa
  • iamshaofa
  • 2015年03月12日 15:36
  • 3444

C语言面向对象编程(一):封装与继承

C++ 语言中自带面向对象支持,如封装、继承、多态等面向对象的基本特征。 C 原本是面向过程的语言,自身没有内建这些特性,但我们还是可以利用 C 语言本身已有的特性来实现面向对象的一些基本特征。接下来...
  • foruok
  • foruok
  • 2014年01月12日 22:16
  • 44995

用C语言模拟面向对象编程(上)

导读:   用C语言模拟面向对象编程   虽然我接触计算机已经有将近一年了,但一直以来我不愿意写技术方面的文档,因为所谓的“技术”就是照着做得东西, 即使可能遇到一些难题,到网上搜索一下就可以解决,...
  • chief1985
  • chief1985
  • 2008年01月01日 23:18
  • 3637

用C语言实现面向对象的编程方式

主要利用结构体和函数指针,实现面向对象编程中的封装、继承和多态; //base.h typedef struct BaseClass {     int m_Data;  void ...
  • xjbclz
  • xjbclz
  • 2016年06月04日 22:35
  • 1293

C语言面向对象编程(四):面向接口编程

Java 中有 interface 关键字,C++ 中有抽象类或纯虚类可以与 interface 比拟,C 语言中也可以实现类似的特性。...
  • foruok
  • foruok
  • 2014年01月18日 23:46
  • 12468

Linux内核模块模型面向对象分析

http://www.cnblogs.com/wenhuisun/archive/2013/02/22/2921781.html Linux内核模块模型面向对象分析 C到C...
  • adaptiver
  • adaptiver
  • 2016年06月12日 14:03
  • 659

轻量级的C语言面向对象编程框架(约100行代码)

转载地址:http://blog.csdn.net/sinojelly/article/details/5259997 摘要: 本文推荐一种新开源(2010.1.24开源)的轻量级的面向对...
  • wuhenyouyuyouyu
  • wuhenyouyuyouyu
  • 2015年10月19日 14:59
  • 1480
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux设备模型与内核中的面向对象思想
举报原因:
原因补充:

(最多只允许输入30个字)