Linux字符设备驱动程序的注册
2012-06-14 09:12
337 查看
字符设各是Linux中最简单的设备。
在Linux中,字符设各是用一个叫做字符设备结构的数据结构char device struct来描述的。为了管理上的方便,系统维护了一个数组chrdevsLJ,该数组的每一项都代表一个字符没各。
在文件linux/fs/char_dev.c中定义的char_device_struct的数据结构及数组chrdevs[]代码如下:
![](http://www.dzsc.com/data/uploadfile/200921893425915.gif)
结构中的一个域name是指向设备驱动程序名的指针;另一个域fops是指向-个封装了文件操作函数集结构的指针。这些文件操作函数就是对这个字符设备进行具体的如打开、读、写、关闭等文件操作驱动程序。
字符设备注册表结构如图所示。当安装一个字符设各时,须调用注册函数regester chardev()向注册表插入一个新的表项。函数regester_chardev()的原型如下:
![](http://www.dzsc.com/data/uploadfile/200921893425108.gif)
![](http://www.dzsc.com/data/uploadfile/200921893425134.gif)
图 字符设备驱动程序的注册
当代表-个字符设备的文件被进程打开日1,系统根据设备主、次设各号,查询上述的chrdevs[]数组,并获得fops指针和为进程设置-个描述这个字符特眯文件跑数握结构file,进而通过fops指针调用指定的驱动程序。
取消注册的函数为unregister_chrdev()。其原型如下:
int unregister_chrdev int major,cONst char*nAME):
设备驱动程序的注册和取消注册应分别在模块的初始化函数和析构函数中完成。
在Linux中,字符设各是用一个叫做字符设备结构的数据结构char device struct来描述的。为了管理上的方便,系统维护了一个数组chrdevsLJ,该数组的每一项都代表一个字符没各。
在文件linux/fs/char_dev.c中定义的char_device_struct的数据结构及数组chrdevs[]代码如下:
![](http://www.dzsc.com/data/uploadfile/200921893425915.gif)
结构中的一个域name是指向设备驱动程序名的指针;另一个域fops是指向-个封装了文件操作函数集结构的指针。这些文件操作函数就是对这个字符设备进行具体的如打开、读、写、关闭等文件操作驱动程序。
字符设备注册表结构如图所示。当安装一个字符设各时,须调用注册函数regester chardev()向注册表插入一个新的表项。函数regester_chardev()的原型如下:
![](http://www.dzsc.com/data/uploadfile/200921893425108.gif)
![](http://www.dzsc.com/data/uploadfile/200921893425134.gif)
图 字符设备驱动程序的注册
当代表-个字符设备的文件被进程打开日1,系统根据设备主、次设各号,查询上述的chrdevs[]数组,并获得fops指针和为进程设置-个描述这个字符特眯文件跑数握结构file,进而通过fops指针调用指定的驱动程序。
取消注册的函数为unregister_chrdev()。其原型如下:
int unregister_chrdev int major,cONst char*nAME):
设备驱动程序的注册和取消注册应分别在模块的初始化函数和析构函数中完成。
相关文章推荐
- linux字符设备驱动程序(一)----------分配设备号并注册设备
- linux 驱动程序 设备模块 设备号 设备文件创建 设备注册 字符驱动设备分析
- linux 驱动程序 设备模块 设备号 设备文件创建 设备注册 字符驱动设备分析
- linux设备驱动程序之简单字符设备驱动
- Linux设备驱动--字符设备驱动程序2
- 11-S3C2440驱动学习(七)嵌入式linux-字符设备的另一种写法及RTC驱动程序分析和字符设备驱动框架总结
- Linux 2.6 字符设备驱动程序
- 从零开始写linux字符设备驱动程序(二)(基于友善之臂tiny4412开发板)
- Linux 字符设备驱动程序的编写框架
- linux字符设备驱动程序源文件
- Linux字符设备驱动程序开发
- Linux 字符设备驱动程序
- linux驱动设备--------字符设备的注册
- linux设备驱动程序注册过程详解
- 简单linux字符设备驱动程序
- Linux设备驱动程序学习 高级字符驱动程序操作[阻塞型I/O和非阻塞I/O]
- Linux字符设备驱动程序编写基本流程
- Linux字符设备驱动程序的编写框架
- Linux设备驱动程序学习(基于2440的GPIO字符设备驱动)
- Linux设备驱动程序学习 高级字符驱动程序操作[阻塞型I/O和非阻塞I/O]【转】