必威体育Betway必威体育官网
当前位置:首页 > IT技术

register_chrdev()与register_chrdev_region()

时间:2019-10-29 13:11:05来源:IT技术作者:seo实验室小编阅读:63次「手机版」
 

register_chrdev

分配设备编号,注册设备与注销设备的函数均在fs.h中声明,如下:

extern int register_chrdev_region(dev_t,unsigned int,const char*);表示静态的申请和注册设备号

extern int alloc_chrdev_region(dev_t,unsigned int,const char*);表示动态的申请和注册设备号

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设备的步骤。

文章最后发布于: 2011-04-04 13:39:00

相关阅读

Linux字符设备驱动之register_chrdev_region()系列

Linux字符设备驱动之 register_chrdev_region()函数系列1.内核中所有已分配的字符设备编号都记录在一个名为 chrdevs 散列表里。

Linux字符设备注册函数 register_chrdev详解

Linux字符设备注册函数 register_chrdev详解当我们需要注册字符设备的时候,需要module_init()中调用register_chrdev()注册。下面

分享到:

栏目导航

推荐阅读

热门阅读