2012-06-16 50 views
0

是否有任何簡單的方法讓父對象在kobject_add函數中使用?我想把這個文件放在/sys/module/mymodule/parameters。我已經有了工作參數,但是我在錯誤的目錄中創建了它。我發現module.h中有module_subsys,但我不知道如何使用它。 這是我的初始化函數代碼:獲取父對象kobject_add

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

回答

1

從來沒有嘗試過自己,但看起來&THIS_MODULE->mkobj.kobj合適。
我沒有看到任何直接使用kobject_add的內核代碼,所以它可能不是正確的方法。

如果你已經註冊了設備驅動程序,那麼&dev->kobj看起來是一個好方法。

+0

我發現它也是我自己幾分鐘前,而看着module.h,與THIS_MODULE的版本適合我 –

+0

但在我的內核kobj屬性不是一個指針,所以它看起來像&THIS_MODULE-> mkobj。 kobj –

+0

我的錯誤。我沒有真正嘗試編譯它。編輯。 – ugoren