Linux字符驱动总结
1、主设备号和此设备号
主编号标识设备相连的驱动,次编号被内核用来决定引用哪个设备.
在内核中, dev_t 类型(在 <linux/types.h>中定义)用来持有设备编号.对于 2.6.0 内核, dev_t 是 32 位的量, 12 位用作主编号, 20 位用作次编号.
应当利用在 <linux/kdev_t.h>中的一套宏定义. 为获得一个 dev_t 的主或者次编号, 使用:
在建立一个字符驱动时你的驱动需要做的第一件事是获取一个或多个设备编号来使用.并且应当在不再使用它们时释放它.
安排主编号最好的方式, 我们认为, 是缺省使用动态分配, 而留给自己在加载时或者甚至在编译时指定主编号的选项权. 以下是在scull.c中用来获取主设备好的代码:
动态分配的缺点是你无法提前创建设备节点, 分配给你的模块的主编号会变化. 对于驱动的正常使用, 这不是问题, 一旦编号分配了, 你可从 /proc/devices 中读取它. 2、一些重要数据结构 大部分的基础性的驱动操作包括 4 个重要的内核数据结构cdev,file_operations, file 和 inode. file_operations结构定义在 <linux/fs.h>
struct file, |
|||||||||||
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |