我正在学习如何编写内核驱动程序,我对函数 unregister_chrdev_region 的正确使用有疑问。
现在我有一个简单的测试模块,只有 init 和 exit 函数:
static dev_t devn;
int __init my_dev_init(void)
{
devn = MKDEV(0,0);
if(alloc_chrdev_region(&devn,0,1,"my_dev") != 0)
{
return -EBUSY;
}
else
{
return 0;
}
}
void __exit my_dev_exit(void)
{
unregister_chrdev_region(devn,1);
}
我的问题:如果注册失败,调用 unregister_chrdev_region 是否安全?我会假设没有,但无论初始化期间发生了什么,我看到的几乎所有示例代码都会调用 unregister_chrdev_region。