c - 获取 kobject_add 的父级

标签 c linux-kernel kernel-module sysfs

有没有什么简单的方法可以让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 看起来是个好方法。

关于c - 获取 kobject_add 的父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11067262/

相关文章:

c - 如何从内核中获取总物理内存

c++ - 如何使用 FFTW 进行频谱分析?

c++ - 访问二维数组时到底发生了什么

linux - Linux 内核 4.x 中的 CAN j1939 支持

gcc - 函数可以在 linux 内核中快速调用和内联吗?

在新的 ext4 文件系统中创建新文件

linux - 如何使用预构建的内核输出目录构建 linux 内核模块?

linux - 如何从 *.ko 文件中获取默认内核模块名称?

c - 键入的代码与书中完全相同,返回错误

c - 反转 5 位数字得到负数