在';不管怎么说,你要移除整个kobject?
在Linux内核模块的代码中,我创建了一个在';不管怎么说,你要移除整个kobject?,c,linux,linux-kernel,driver,sysfs,C,Linux,Linux Kernel,Driver,Sysfs,在Linux内核模块的代码中,我创建了一个kobject,它成为/sys/目录中的一个目录,然后在其中创建了一个sysfs文件。所以它看起来像/sys/KobjName/SysfsFile。这是kobject目录中的唯一文件,执行rmmod moduleX命令后,将删除sysfs文件和kobject 目前我的moduleX清理代码如下 static void cleanup(void) { /* Remove test file */ if (file_ok) s
kobject
,它成为/sys/目录中的一个目录,然后在其中创建了一个sysfs
文件。所以它看起来像/sys/KobjName/SysfsFile。这是kobject
目录中的唯一文件,执行rmmod moduleX
命令后,将删除sysfs
文件和kobject
目前我的moduleX
清理代码如下
static void cleanup(void)
{
/* Remove test file */
if (file_ok)
sysfs_remove_file(kobj, &attributes.attr);
/* Remove /sys/ddttest directory */
if (kobj)
kobject_put(kobj);
}
其中,file\u ok
是一个0或1的整数,表示执行的sysfs\u create\u文件(kobj,&attributes.attr)
函数是否正确(例如创建了文件)
我现在的问题是,在删除
kobject
之前,是否有必要删除sysfs
文件。在用户空间中导航文件系统时,只需删除一个目录,即可删除其中的所有文件。内核空间中的kobject
文件系统就是这种情况吗?当调用rmdir
时,如果目录不是空的,该实用程序将抱怨并且不删除目录。因此它可能不起作用。与其使用kobject_put()来减少使用次数,不如使用函数:void kobject_del(struct kobject*kobj)代码>