设备驱动的分层思想
2012-12-12 16:40
197 查看
linux内核虽然完全由c语言编写,但却频繁用到面向对象的分层设计思想。在设备驱动方面,往往为同类的设备设计一个框架,框架的核心层实现了通用操作,如果具体设备需要具体操作,可以进行重载。
1.重载的一般实现:
int core_func(struct xxx_dev *dev,...){
if(dev->func)
return dev->func(...);
/*核心层的实现*/
}
首先检查是否在底层设备驱动中重载了该函数,如果重载了就调用具体设备的具体实现,否则按核心层代码功能实现。
2.简化驱动程序
return_type core_func(xxx_dev *dev,...){
//通用代码A
底层操作1:dev->func_ops1
//通用代码B
底层操作2:dev->func_ops2
//通用代码C
底层草组3:dev->func_ops3
}
这样就免去了通用的代码,只需要实现具体设备的操作
linux驱动中,一般把通用的驱动部分放在core层中,底层不能通用的部分则划分为设备驱动,所以设备的驱动也是要联合core层才是一个完整的驱动,只是linux内核里面已经有了core层通用的设备,编写驱动时只需要编写不通用的部分。
分层化设计在linux的input、RTC、MTD、I2C、SPI、TTY、USB等诸多设备驱动类型中广泛应用。
相关文章推荐
- linux设备驱动归纳总结(八):3.设备管理的分层与面向对象思想
- Linux设备驱动的分层设计思想
- 【Linux开发】linux设备驱动归纳总结(八):3.设备管理的分层与面向对象思想
- Linux设备驱动的分层设计思想
- Linux设备驱动的分层设计思想
- 嵌入式Linux设备驱动开发思想进阶之驱动分层与驱动分离
- Linux设备驱动的分层设计思想[转]
- Linux 设备驱动开发思想 —— 驱动分层与驱动分离
- Linux 设备驱动开发思想 —— 驱动分层与驱动分离
- Linux设备驱动之中断支持及中断分层
- 驱动程序分层分离概念_总线驱动设备模型
- Linux设备驱动第十天(mmap、linux内核分离(软硬分离)思想)
- linux设备驱动归纳总结(三):3面向对象思想和lseek
- 从spi驱动理解linux驱动的分层思想
- 驱动程序分层分离概念--总线驱动设备模型
- input子系统学习笔记三 驱动的分层及设备驱动层实现原理
- 分层分离之platform总线设备驱动模型
- Symbian OS Internals——设备驱动、扩展、EUSER、文件服务器、窗口服务器和软件分层
- 面向对象地分析Linux内核设备驱动(3)——用面向对象思想分析vfb Framebuffer设备驱动
- 设备驱动分层-抽象与具体的演变