gpt4 book ai didi

c - 删除由 device_create()、class_create() 和 alloc_chrdev_region() 创建的文件

转载 作者:行者123 更新时间:2023-11-30 16:26:26 26 4
gpt4 key购买 nike

使用alloc_chrdev_region()cdev_init()cdev_add()class_create()<创建字符设备驱动程序后device_create() 我无法成功清除 module_exit() 中上述​​函数创建的所有条目。当我使用 rmmod 时,它只是说“已杀死”。当我检查 /proc/devices//sys/class//dev/ 目录时,我创建的文件仍然存在。如何干净地退出我的模块?我用于退出的代码:

static void char_exit(void)
{
printk(KERN_ALERT "leaving the kernel.");
cdev_del(my_chardev);

device_destroy(myclass,first);

class_destroy(myclass);

unregister_chrdev_region(first,1);
}

由于某种原因,它不起作用。

最佳答案

我可以看到您尝试销毁/删除类、设备和 cdev 的顺序存在问题。

我用示例代码在我的系统上进行了尝试。下面附有快照:

[root@dhcp-10-123-181-110 own_char]# find/-name example_cdev0

/dev/sample_cdev0

/sys/devices/virtual/sample/sample_cdev0

/sys/class/sample/sample_cdev0

[root@dhcp-10-123-181-110 own_char]#

[root@dhcp-10-123-181-110 own_char]#

[root@dhcp-10-123-181-110 own_char]# rmmod Himschar

[root@dhcp-10-123-181-110 own_char]# find/-name example_cdev0

[root@dhcp-10-123-181-110 own_char]# cat/proc/devices | grep -i 样本

[root@dhcp-10-123-181-110 own_char]#

================================================== =========================

您需要遵循的顺序是:

    device_destroy(sample_class, sample_dev_t);
class_destroy(sample_class);
cdev_del(sample_cdev);
unregister_chrdev_region(sample_dev_t, 1);

关于c - 删除由 device_create()、class_create() 和 alloc_chrdev_region() 创建的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53058991/

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