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内核设备驱动(3)——用面向对象思想分析vfb Framebuffer设备驱动

用面向对象思想分析vfb Framebuffer设备驱动 - 内核版本 Linux Kernel 2.6.34, 与 Robert.Love的《Linux Kernel Develop...

【敏捷开发每日一贴】敏捷估算方法

敏捷估算方法 无论是团队研发一款产品或者开发某一个项目,我们都需要回答“我们大概什么时间能够完成?”, 或者到某一个时间点,我们能够做到什么程度, 因此和传统的开发模式一样,我们在故事拆分之后需要对...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

Delphi之面向对象的界面复用技术

代码复用和界面复用 面向对象的编程思想强调代码的可复用。而Delphi的精髓实际上就是Object Pascal语言,Object Pascal语言是一个非常强大的面向对象的编程语言,可以通过对象的...

【敏捷开发每日一贴】敏捷实践Showcase的七宗罪

敏捷实践Showcase的七宗罪 Showcase(就是SprintReview,演示会、评审会)就是开发团队把开发好的功能给客户的Product Owner等业务相关人员演示,以获取他们对所开发系统...

【敏捷开发每日一贴】:从“敏捷开发”说起

从敏捷开发说起 “敏捷”概念最先是从软件开发领域引入的。传统的软件开发采用的是瀑布式开发的流程,把整个开发过程分成了需求、设计、编码、测试、发布等阶段,前面阶段达成后再进入下一个阶段,整个过程按照事先...

c风格的面向对象--linux内核学习

Linux使用了struct这个来实现对象,函数指针来实现方法。比如说,设备是一个类,每一个驱动程序都将这个类实例化,然后交给内核。 linux内核大量地使用了oo的思想,只是没有用C++罢了。...

Linux驱动体现的编程思想---面向对象的编程思想

一、描述一个对象需要该对象属性、对象方法,而在Linux设备驱动中是用一个具体的结构体来描述该设备,在结构体中就包含了设备属性、设备方法。 设备属性:① 与设备通信相关的参数(固定的)    ② ...

linux对象系统---kobject, ktype, kset, subsys

本文转自:linux中kobject/ktype/kset/subsys之间的关系 随着内核版本的发展,会有一些变化,无论怎样,变化的是形式,不变的是思想!  那么他们之间具有什么...

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

原文链接:linux内核学习 – C风格的面向对象     linux内核大量使用面向对象的编码风格。然而linux内核是完全使用C写就。学习他们如何使用C模拟面向对象机制很有意思。这种做法...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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