gpt4 book ai didi

linux - 为什么设备存在于/proc/devices 即使模块被卸载

转载 作者:太空狗 更新时间:2023-10-29 12:04:37 25 4
gpt4 key购买 nike

我正在编写一个基于 ldd 的简单字符驱动程序 scull。对于我的示例字符驱动程序,尽管模块是卸载的设备,但主要编号存在于/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,看来你已经用另一种方式完成了,首先使用 cdev_del 然后使用 unregister_chrdev_region

  3. 您混淆了 unregister_chrdev 的旧表示法和 cdev_del 的新表示法。

    • 当您使用register_chrdev 进行注册时,应使用unregister_chrdev 之一

    • "cdev_init/cdev_add after register_chrdev_region"应该与 "cdev_del before unregister_chrdev_region

关于linux - 为什么设备存在于/proc/devices 即使模块被卸载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19440216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com