四,alloc_chrdev_region 4.1 函数原型 /*** 注册一个主设备号由内核动态分配,次设备号为baseminor~baseminor+count的设备驱动* @dev: 用来获取设备号* @baseminor:次设备号起始值* @count: 次设备号个数* @name: 设备名称** Allocates a range of char device numbers. The major number will be* chosen...
register_chrdev_region() 函数用于分配指定的设备编号范围。如果申请的设备编号范围跨越了主设备号,它会把分配范围内的编号按主设备号分割成较小的子范围,并在每个子范围上调用 __register_chrdev_region() 。如果其中有一次分配失败的话,那会把之前成功分配的都全部退回。 int alloc_chrdev_region(dev_t *dev, ...
int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, const char *name) 该函数需要传递给它指定的第一个次设备号baseminor(一般为0)和要分配的设备数count,以及设备名,调用该函数后自动分配得到的设备号保存在dev中。 当使用了alloc_chrdev_region()动态分配设备号之后,需要依次使用: cde...
intalloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count,const char *name); 上面这2个注册设备的函数,其实对应着旧的 API 函数register_chrdev:把参数 1 表示的动态分配、静态分配,拆分成2个函数而已。 也就是说: register_chrdev_region(): 静态注册设备; alloc_chrdev_region(): 动态注册...
voidunregister_chrdev_region(dev_t first,unsigned int count); 这三个函数在<linux/fs.h>中声明。 静态分配:即直接使用内核源码数的 Documentation/devices.txt 中定义的未使用的主设备号。它对应于register_chrdev_region 函数。 动态分配:即动态分配一个主设备号,它对应于 alloc_chrdev_region 函数。
调用alloc_chrdev_region函数,内核会自动分配给我们一个尚未使用的主设备号。我们可以通过命令“cat /proc/devices”查询内核分配的主设备号。 alloc_chrdev_region函数原型 1 int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, const char *name) 函数参数和返回值如下: 参数: dev:指向...
内核提供了三个函数来注册一组字符设备编号,这三个函数分别是 register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev() 代码位置: include/linux/fs.h kernel/fs/char_dev.c staticinlineintregister_chrdev(unsignedintmajor,constchar*name,conststructfile_operations*fops){return__register_chrdev...
.open = simple_cdev_open, .release = simple_cdev_release, };staticint__initsimple_cdev_init(void){intret; ret = alloc_chrdev_region(&g_simple_cdev_dev_no,0,1,"simple_cdev");if(ret <0) {returnret; } g_simple_cdev = cdev_alloc();if(g_simple_cdev ==NULL) {return-1; ...
1>int register_chrdev_region(dev_t from, unsigned count, const char *name) from :要分配的设备编号范围的初始值(次设备号常设为0); Count:连续编号范围. name:编号相关联的设备名称. (/proc/devices); 2>动态分配: int alloc_chrdev_region(dev_t *dev,unsigned int firstminor,unsigned int count,...
使用alloc_chrdev_region函数在系统中注册字符设备号(与上一节给定的设备号100不同,我们应该让内核来分配设备号)。 使用major和mkdev函数来获取在设备中使用的主设备号和次设备号。 使用cdev_init函数初始化chardev_cdev结构。 使用cdev_add函数将字符设备添加到系统。