register_chrdev_region 用这个函数静态申请设备号举例
时间: 2023-06-16 10:04:24 浏览: 49
`register_chrdev_region` 函数用于静态分配字符设备号。下面是一个简单的示例:
```c
#include <linux/fs.h> // for register_chrdev_region and unregister_chrdev_region
// 定义设备号
dev_t devno = MKDEV(200, 0); // 主设备号为200,次设备号为0
// 注册设备号
int result = register_chrdev_region(devno, 1, "my_device");
if (result < 0) {
printk(KERN_WARNING "my_device: can't get major %d\n", MAJOR(devno));
return result;
}
// 成功注册设备号后,可进行一些设备初始化操作
// 注销设备号
unregister_chrdev_region(devno, 1);
```
在上面的示例中,我们首先定义了一个设备号 `devno`,其中主设备号是 200,次设备号是 0。然后我们调用 `register_chrdev_region` 函数来注册这个设备号,第二个参数是设备号数量,这里我们只需要一个设备号,所以是 1。第三个参数是设备名称,可以随便取一个有意义的名称。
如果注册成功,函数返回 0。如果失败,则返回负数,这时应该输出警告信息并返回错误码。
成功注册设备号后,我们可以进行一些设备初始化操作,例如分配内存、初始化设备状态等。
最后,我们需要在模块退出时注销设备号,调用 `unregister_chrdev_region` 函数即可。