首页 理论教育 Linux驱动开发实例:cdev

Linux驱动开发实例:cdev

时间:2023-10-19 理论教育 版权反馈
【摘要】:实际上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为次设备号的数量。核心代码如下所示:本例的应用层代码与运行结果同上例。

Linux驱动开发实例:cdev_add字符设备注册

实际上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。核心代码如下所示:

本例的应用层代码与运行结果同上例。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈