为什么设备存在于/ 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");

}

我能看到其主设备号与旧设备的时候我卸载后同样加载新模块。

回答:

  1. cdev_del需要一个指针,确保您my_cdev是 指针。

    void cdev_del(struct cdev *);

  2. 这是cdev_del,第一和unregister_chrdev later,看来你 已经做它的其他方式,使用unregister_chrdev和新的cdev_delunregister_chrdev_region

  3. 你混淆了旧符号cdev_del的符号。

    • 要么unregister_chrdev当您使用register_chrdev登记

      OR

    • cdev_init/cdev_addregister_chrdev_region后” 应使用应结合使用 “cdev_delunregister_chrdev_region之前”

回答:

struct cdev具有应该设置为THIS_MODULE的所有者字段。确保它已设置

以上是 为什么设备存在于/ proc/devices中虽然模块卸载了 的全部内容, 来源链接: utcz.com/qa/264946.html

回到顶部