2013-07-11 113 views

回答

2

當kobjects嵌入到其他結構中時,結構會接收kobject提供的標準函數。最重要的是,結構的嵌入式kobject現在使結構成爲對象層次結構的一部分。例如,cdev結構通過父指針cdev->kobj.parent並且該列表是在對象分層結構像樣cdev->kobj.entry

來源:Linux Kernel Development by Robert Love

2

Sysfs是描述可用於系統中的分層圖案的器件一個虛擬文件系統。這是通過使用struct kobj完成的。

struct kobject { 
     char     *k_name; 
     char     name[KOBJ_NAME_LEN]; 
     struct kref    kref; 
     struct list_head  entry; 
     struct kobject   *parent; 
     struct kset    *kset; 
     struct kobj_type  *ktype; 
     struct dentry   *dentry; 
}; 

對於任何驅動程序Kobj的需要將設備屬性導出到sysfs 如果我們考慮像i2c_clientspi_device(SPI客戶端)。我們在成員struct dev內部有kobj將驅動程序屬性導出到用戶空間虛擬文件系統(Sysfs)。 Kobj結構成員可處理所有操作,包括引用設備號(主要/次要)和涉及打開,讀/寫,關閉等設備的文件操作。

您的情況cdev_init & cdev_add將在內部使用kobj來完成上述操作。

相關問題