为什么设备存在于/ proc/devices中虽然模块卸载了
我正在写一个基于ldd的简单的charcter驱动程序scull。对于我的示例字符驱动程序,evethough模块是卸载设备,主要编号存在于/ proc/devices中。如何删除?为什么设备存在于/ proc/devices中虽然模块卸载了
我模块退出函数
void scull_exit(void) {
unregister_chrdev(Major, "scull1");
cdev_del(my_cdev);
printk(KERN_ALERT "Good Bye\n");
}
我能看到其主设备号与旧设备的时候我卸载后同样加载新模块。
回答:
cdev_del
需要一个指针,确保您my_cdev是 指针。void cdev_del(struct cdev *);
这是
cdev_del
,第一和unregister_chrdev later
,看来你 已经做它的其他方式,使用unregister_chrdev和新的cdev_del
先unregister_chrdev_region
你混淆了旧符号cdev_del的符号。
要么
unregister_chrdev
当您使用register_chrdev
登记OR
“
cdev_init
/cdev_add
register_chrdev_region
后” 应使用应结合使用 “cdev_del
unregister_chrdev_region
之前”
回答:
struct cdev具有应该设置为THIS_MODULE的所有者字段。确保它已设置
以上是 为什么设备存在于/ proc/devices中虽然模块卸载了 的全部内容, 来源链接: utcz.com/qa/264946.html