奇怪的是,struct cdev
有struct kobject
成員,請問有誰知道原因?爲什麼struct struct cdev有kobject成員?
2
A
回答
2
當kobjects嵌入到其他結構中時,結構會接收kobject提供的標準函數。最重要的是,結構的嵌入式kobject現在使結構成爲對象層次結構的一部分。例如,cdev
結構通過父指針cdev->kobj.parent
並且該列表是在對象分層結構像樣cdev->kobj.entry
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_client
spi_device
(SPI客戶端)。我們在成員struct dev
內部有kobj將驅動程序屬性導出到用戶空間虛擬文件系統(Sysfs
)。 Kobj
結構成員可處理所有操作,包括引用設備號(主要/次要)和涉及打開,讀/寫,關閉等設備的文件操作。
您的情況cdev_init
& cdev_add
將在內部使用kobj來完成上述操作。
相關問題
- 1. 爲什麼要在驅動程序代碼中註冊struct cdev
- 2. struct task_struct成員?
- 3. struct沒有任何成員
- 4. 'const struct'與'struct'有什麼不同?
- 5. 返回struct成員
- 6. 爲什麼這段C++沒有找到struct成員'filename'?
- 7. struct沒有任何成員名爲
- 8. 幾乎將struct的向量轉換爲struct成員的向量
- 9. `struct ioctl`在`struct tty_driver`中做了什麼?
- 10. 爲什麼Linux內核具有`struct sock`和`struct socket`?
- 11. Struct成員初始化
- 12. 爲什麼這個struct成員需要兩個生命期?
- 13. 爲什麼靜態const char *模板struct成員未初始化
- 14. 爲什麼你必須使用' - >'來訪問struct成員?
- 15. 引用類型作爲Struct中的成員會發生什麼?
- 16. 爲什麼struct的sizeof與其成員之和不同?
- 17. 使用stl map作爲struct的成員
- 18. fread fseek只有C中的struct成員
- 19. 「struct a a1 = {0};」不同於「struct a a2 = {5};」爲什麼?
- 20. struct struct
- 21. 爲什麼打開調用兩個參數(struct inode *,struct file *)?
- 22. 如何將值賦給struct的struct成員?
- 23. 打印一個struct指向另一個struct的成員?
- 24. 爲什麼struct hostent中的h_addr_list是char **而不是struct in_addr **?
- 25. struct node和struct node *之間的' - >'有什麼區別?
- 26. typedef const struct * CGPath和typedef struct * CGPath有什麼區別?
- 27. struct node * head和struct node ** head有什麼區別?
- 28. `typedef struct X {}`和`typedef struct {} X`有什麼區別?
- 29. 爲什麼struct字段顯示爲空?
- 30. 從成員struct的成員函數中訪問類的成員?