释放设备号-基于himawari-8卫星的沙尘监测

时间:2024-06-29 20:20:57
【文件属性】:

文件名称:释放设备号-基于himawari-8卫星的沙尘监测

文件大小:7.57MB

文件格式:PDF

更新时间:2024-06-29 20:20:57

嵌入式linux 周立功

(2)动态获取主设备号 如果事先不知道设备的设备号,或者一个驱动可能在多个系统上运行,为了避免出现设 备号冲突,必须采用动态设备号。调用 alloc_chrdev_region 函数可以从系统获得一个或者多 个主设备号。alloc_chrdev_region 函数在中定义: alloc_chrdev_region(dev_t *dev, unsigned int firstminor, unsigned int count, char *name); alloc_chrdev_region 函数可以从系统动态获得一个或者多个主设备号。dev 用于保存已 经获得的编号范围的第一个值,firstminor 是第一个次设备号,通常是 0,count 是获得的编 号数量,name 是设备名称。 动态获取得到的设备号,一定要用一个全局变量保存下来,以便卸载使用,否则该设备 号将不能被释放。程序清单 2.7 是一个动态获取设备号的使用范例。 程序清单 2.7 动态获取设备号 ret = alloc_chrdev_region(&devno, minor, 1, "char_cdev"); /* 从系统获取主设备号 */ major = MAJOR(devno); /* 保存获得的主设备号 */ if (ret < 0) { printk(KERN_ERR "cannot get major %d \n", major); return -1; } 一个设备号一旦被系统分配,就会出现在/proc/devices 文件中。为了使用方便,除非特 殊情况,请尽量采用动态分配设备号。 (3)释放设备号 在设备注销的时候必须释放占用的主设备号,调用 unregister_chrdev_region 可以释放设 备号。函数原型: void unregister_chrdev_region(dev_t from, unsigned count); 2.2.3 设备的注册和注销 2.6 内核用 cdev数据结构来描述字符设备,cdev在中定义,如程序清单 2.8 所示。 程序清单 2.8 cdev 结构定义 struct cdev { struct kobject kobj; struct module *owner; const struct file_operations *ops; struct list_head list; dev_t dev;


网友评论