驱动程序结构学习
来源:互联网 发布:张子萱的淘宝店 编辑:程序博客网 时间:2024/05/23 00:05
可以把内核看做一个进程,其它进程对内核的系统调用就可以看做进程通信。各个驱动程序从属于内核,可以把驱动程序看做一个对象,因为同一类驱动程序只能有一个,可以用单例模式来实现。抽象驱动定义一个接口,具体硬件的驱动实现这个接口。以文件系统为例,考虑到驱动都是用C语言实现的,以下用C语言描述。
1,抽象驱动中定义文件结构体(简单起见,函数的返回类型和参数都是void):保护两个函数变量(是不是很像C++中的虚函数,只不过C++对象中存放的是虚表指针,而C中相当于直接存放了虚表)
struct file{
void(*open)();
void(*close)();
};
2,抽象驱动中定义并实现函数来查询获取指定的驱动对象:
void* get_module(int module_name);
3,抽象驱动中定义并实现函数注册驱动对象:
void register_module(int module_name, void* module);
4,实现驱动中定义结构对象,初始化并注册。在C++中,对虚表的赋值和对象虚指针的赋值是由编译器实现的,C语言编译器态简单。
void my_open(){}
void my_close(){}
struct file my_file{
.open=my_open;
.close=my_close;
};
register_module(123, &my_file);
5,外部调用驱动,只需要根据指定驱动名称调用:
struct file* this_file=get_module(123);
this_file->open();
this_file->close();
大致的结构就是这样,具体的驱动实现要考虑很多细节,比如同步问题。
- 驱动程序结构学习
- 经典驱动程序结构
- Vxworks驱动程序的结构
- 驱动程序的基本结构
- 驱动程序的层次结构
- 嵌入式linux驱动程序结构
- 驱动程序的结构
- Vxworks驱动程序的结构
- 驱动程序的基本结构
- 结构化设备驱动程序
- 驱动程序的基本结构
- 3.驱动程序结构
- 结构化设备驱动程序
- 驱动程序层次结构、PIRP结构、IO_STACK_LOCATION结构
- NT驱动程序的分层结构
- Windows驱动程序的基本结构
- 分析一个设备驱动程序结构
- 设备驱动程序结构及初始化
- 对static、extern和文件包含的理解1
- 根据给定日期数计算星期数
- hdoj1098简单题、找规律
- Firefox兼容性问题
- 腾讯开放真相
- 驱动程序结构学习
- 一个成功只属于 1% 的真实世界
- hibernate.hbm2ddl.auto 的设置
- 图像分割之(二)Graph Cut(图割)
- 子查询
- openacs
- Linux修改文件时候出现崩溃,产生了一个.swap交换文件,如何修复?
- 看书
- 外媒评2013年十大创新社交媒体公司