有没有什么简单的方法可以让parent在kobject_add函数中使用?我想把文件放在 /sys/module/mymodule/parameters
中。我已经有了工作参数,但我在错误的目录中创建了它。我发现module.h中有module_subsys,但我不知道如何使用它。这是我的初始化函数代码:
static int __init init_hello(void)
{
subsystem_register(&module_subsys);
struct my_attr *a;
Major = misc_register(&mydevice);
mykobj = kzalloc(sizeof(*mykobj), GFP_KERNEL);
if (mykobj) {
kobject_init(mykobj, &mytype);
kobj_set_kset_s(mykobj, module_subsys);
if (kobject_add(mykobj, NULL, "%s", "sysfs_example")) {
printk("Sysfs creation failed\n");
kobject_put(mykobj);
mykobj = NULL;
return -1;
}
}
a = container_of(&(my_first.attr), struct my_attr, attr);
msg_Ptr = kzalloc(a->value, GFP_KERNEL);
bytesindev=0;
if(Major) {
printk(KERN_ALERT "Rejestrowanie urządzenia nie powiodło się\n");
return Major;
}
return SUCCESS;
}
我自己从未尝试过,但 &THIS_MODULE->mkobj.kobj
看起来很合适。
我没有看到任何直接使用 kobject_add
的内核代码,所以这可能不是正确的方法。
如果您已经注册了设备驱动程序,那么 &dev->kobj
看起来是个好方法。
我是一名优秀的程序员,十分优秀!