【摘要】:实际上register_chrdev函数调用了cdev_add函数。register_chrdev_region函数用于指定设备号的情况,alloc_chrdev_region函数用于动态申请设备号,系统自动返回没有占用的设备号。int register_chrdev_region;int alloc_chrdev_region;register_chrdev_region函数申请从from开始的count个主设备号。baseminor是起始次设备号,count为次设备号的数量。核心代码如下所示:本例的应用层代码与运行结果同上例。
实际上register_chrdev函数调用了cdev_add函数。在Linux内核中的字符设备用cdev结构来描述,其定义如下:
下面一组函数用来对cdev结构进行操作:
使用cdev_add注册字符设备前应该先调用register_chrdev_region或alloc_chrdev_region分配设备号。register_chrdev_region函数用于指定设备号的情况,alloc_chrdev_region函数用于动态申请设备号,系统自动返回没有占用的设备号。
int register_chrdev_region(dev_t from,unsigned count,const char*name);
int alloc_chrdev_region(dev_t*dev,unsigned baseminor,unsigned count,const char*name);
register_chrdev_region函数申请从from开始的count个主设备号。alloc_chrdev_region申请一个动态主设备号,并申请一系列次设备号。baseminor是起始次设备号,count为次设备号的数量。注销设备号(cdev_del)后使用unregister_chrdev_region:(www.xing528.com)
void unregister_chrdev_region(dev_t from,unsigned count);
例1.5 cdev_add注册字符设备实例
代码见\samples\1door\1-4cdev。核心代码如下所示:
本例的应用层代码与运行结果同上例。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。