曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 7569|回复: 0
打印 上一主题 下一主题

register_chrdev_region && alloc_chrdev_region | 分配设备号

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2009-8-29 13:23:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在调用 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, const char *name);

register_chrdev_region() 函数用于已知起始设备的设备号的情况。
参数 first 表示起始设备号;
参数 count 表示从起始设备号开始连续的设备号数目,需要注意的是 count 不能过大,不然有可能溢出到下一个主设备号上;
参数 name 表示设备的名称,这个名称也会在 /proc/devices 文件以及sfsfs 中看到。

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

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

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

参数 dev ,在系统调用成功后,会把得到的设备号方到这个参数中;
参数 firstminor 是请求的第一个次设备号,一般为 0 ;
参数 count  表示一个范围值;
参数 name 表示设备名。


alloc_chrdev_region() 和 register_chrdev_region() 对比的优点在于它会自动避开设备号重复的冲突。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-4 03:04 , Processed in 0.078733 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表