register_chrdev()与register_chrdev_region()
来源:互联网 发布:纯js前端实现分页代码 编辑:程序博客网 时间:2024/05/17 06:53
分配设备编号,注册设备与注销设备的函数均在fs.h中声明,如下:
extern int register_chrdev_region(dev_t from,unsigned count,const char *name);表示静态的申请和注册设备号
extern int alloc_chrdev_region(dev_t *dev,unsigned baseminor,unsigned count,const char *name);表示动态的申请和注册设备号
extern int register_chrdev(unsigned int,const char*,struct file_operations*);表示int为0时动态注册,非零静态注册。
在linux2.6版本里面,register_chrdev_region是register_chrdev的升级版。
使用register_chrdev_region函数时,首先要定义一个dev_t变量来作为一个设备号,dev_t dev_num;如果想静态申请,那么
dev_num=MKDEV(major_no,0);major_no表示设备号的变量,然后便可以使用register_chrdev_region(dev_num,2,"my_dev");第二个参数表示注册的设备数量,第三个表示驱动名
如果要动态的注册设备号,使用下面alloc_chrdev_region(&dev_num,0,2,"memdev");次设备号从0开始,注册两个设备,设备名为memdev。
前面只是注册了设备号,后面要向内核添加设备了;
struct cdev devno;
cdev_init(&devno,&file_operations) // 初始化设备
devno.owner=THIS_MODULE;
devno.ops=&mem_fops
对于已经知道了主设备号,就用cdev_add(&devno,dev_num,MEMDEV_NR_DEVS);来添加设备
如果是动态申请的设备号,就用cdev_add(&devno,MKDEV(mem_major,0),MEMDEV_NR_DEVS);
由此可见,使用register_chrdev_region()比register_chrdev()多了一步,就是想内核注册添加cdev设备的步骤。
- register_chrdev()与register_chrdev_region()
- register_chrdev()与register_chrdev_region()
- register_chrdev()与register_chrdev_region()
- register_chrdev()与register_chrdev_region()
- register_chrdev()与register_chrdev_region()
- register_chrdev_region与register_chrdev和alloc_chrdev_region区别
- register_chrdev和register_chrdev_region
- register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev()
- register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev()
- register_chrdev() register_chrdev_region() alloc_chrdev_region的区别?
- register_chrdev() register_chrdev_region() alloc_chrdev_region的区别?
- 字符设备 register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev()。
- 字符设备 register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev()
- 字符设备 register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev()
- 字符设备 register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev()
- 字符设备 register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev()。
- 字符设备 register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev()
- 字符设备 register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev()
- android 设置默认launcher 附上代码
- 文件替换
- awk脚本 模式匹配语句 ~匹配运算符 !~不匹配运算符
- 有序线性表合并的算法
- 城市的守望者
- register_chrdev()与register_chrdev_region()
- sort排序
- Android SDK manager无法更新
- iphone--有关日历中NSDateFormatter中英文
- 2014年吉林省赛总结
- Shell脚本内置变量 和 awk脚本内置变量 比较
- HTML学习笔记(1)
- 数据结构冒泡排序
- error LNK2019: 无法解析的外部符号 ___glutInitWithExit@12,该符号在函数 _glutInit_ATEXIT_HACK@8 中被引用 1>GEARS.obj : er