天天看点

register_chrdev_region && alloc_chrdev_region

在调用 cdev_add()函数向系统注册字符设备之前,应首先调用 register_chrdev_region()或 alloc_chrdev_region() 函数向系统申请设备号,这两个函数在 <linux/fs.h>中可以找到,其原型是:

引用

int  register_chrdev_region( dev_t  first ,  unsigned int  count ,  const char  * name);

int  alloc_chrdev_region( dev_t  * dev ,  unsigned int  firstminor ,  unsigned int  count ,  constchar  * name);

register_chrdev_region() 函数用于已知起始设备的设备号的情况。

参数 first 表示起始设备号;

参数 count 表示从起始设备号开始连续的设备号数目,需要注意的是 count 不能过大,不然有可能溢出到下一个主设备号上;

参数 name 表示设备的名称,这个名称也会在 /proc/devices 文件以及sfsfs 中看到。

register_chrdev_region() 成功时返回 0 ,失败时返回负数。

......... ............... .............. ..................... .............. .............. ...........

alloc_chrdev_region() 用于设备号未知,向系统动态申请未被占用的设备号情况。

参数 dev ,在系统调用成功后,会把得到的设备号方到这个参数中;

参数 firstminor 是请求的第一个次设备号,一般为 0 ;

参数 count  表示一个范围值;

参数 name 表示设备名。

继续阅读