1

kobject_add関数で親を使用するための簡単な方法はありますか?ファイルをに入れたい/sys/module/mymodule/parameters。すでに動作しているパラメータがありますが、間違ったディレクトリに作成しています。module.hにmodule_subsysがあることがわかりましたが、その使用方法がわかりません。これは、init関数の私のコードです。

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;
}
4

1 に答える 1

1

自分で試したことはありませんが、&THIS_MODULE->mkobj.kobj適切に見えます。
これを直接使用するカーネルコードkobject_addは見当たらなかったので、おそらくそれは正しい方法ではありません。

デバイスドライバを登録している場合は&dev->kobj、良い方法のように見えます。

于 2012-06-18T13:05:27.120 に答える