linux kset subsystem 3.10内核,Kobject、Kset 和 Subsystem
2014年5月12日Kobject 、Kset 和 Subsy stem - 海王 - 博客園http://www.doczj.com/doc/93b5b6113b3567ec112d8a49.html/leav en/archiv e/2010/04/24/1719191.html 4/8件(2)4. Linux input 子系統(tǒng) io 控制字段(2)
5. linux 內(nèi)核定時(shí)器 tim er_list 詳解(2) (2)把kobject 的 kset 成員指向目標(biāo)kset 。
(3)將kobject 傳遞給下面的函數(shù):int kobject_add(struct kobject *kobj); /*函數(shù)可能失敗(返回一個(gè)負(fù)錯(cuò)誤碼),程序應(yīng)作出相應(yīng)地反應(yīng)*/
內(nèi)核提供了一個(gè)組合函數(shù):
extern int kobject_register(struct kobject *kobj); /*僅僅是一個(gè)
kobject_init 和 kobject_add 的結(jié)合,其他成員的初始化必須在之前手動(dòng)完成*/
當(dāng)把一個(gè)kobject 從kset 中刪除以清除引用時(shí)使用:
void kobject_del(struct kobject *kobj); /*是 kobject_del 和kobject_put 的結(jié)合*/
kset 在一個(gè)標(biāo)準(zhǔn)的內(nèi)核鏈表中保存了它的子節(jié)點(diǎn),在大部分情況下, 被包含的 kobjects 在它們的 parent 成員中保存指向 kset 內(nèi)嵌的 kobject 的指
針,關(guān)系如下:
圖表中的所有的被包含的 kobjects 實(shí)際上被嵌入在一些其他類型中, 甚至可能其他的 kset 。
kset 上的操作
ksets 有類似于kobjects 初始化和設(shè)置接口:
void kset_init(struct kset *kset);
int kset_add(struct kset *kset);
int kset_register(struct kset *kset);
void kset_unregister(struct kset *kset);
/*管理 ksets 的引用計(jì)數(shù):*/
struct kset *kset_get(struct kset *kset);
void kset_put(struct kset *kset);
/* kset 也有一個(gè)名字,存儲(chǔ)于嵌入的 kobject,因此設(shè)置它的名字用:*/kobject_set_nam e(&m y_set->kobj, "The nam e");
ksets 還有一個(gè)指針指向 kobj_type 結(jié)構(gòu)來(lái)描述它包含的 kobject ,這個(gè)類型優(yōu)先于 kobject 自身中的 ktype 。因此在典型的應(yīng)用中, 在 struct
kobject 中的 ktype 成員被設(shè)為 NULL, 而 kset 中的ktype 是實(shí)際被使用的。
在新的內(nèi)核里, kset 不再包含一個(gè)子系統(tǒng)指針struct subsystem *subsys , 而且subsystem 已經(jīng)被kset 取代。
子系統(tǒng)
子系統(tǒng)是對(duì)整個(gè)內(nèi)核中一些高級(jí)部分的表述。子系統(tǒng)通常(但不一定)出現(xiàn)在sysfs 分層結(jié)構(gòu)中的頂層,內(nèi)核子系統(tǒng)包括 block_subsys(/sys/block 塊設(shè)備)、 devices_subsys(/sys/devices 核心設(shè)備層)以及內(nèi)核已知的用于各種總線的特定子系統(tǒng)。
對(duì)于新的內(nèi)核已經(jīng)不再有subsystem 數(shù)據(jù)結(jié)構(gòu)了,用kset 代替了。每個(gè) kset 必須屬于一個(gè)子系統(tǒng),子系統(tǒng)成員幫助內(nèi)核在分層結(jié)構(gòu)中定位 kset 。 /*子系統(tǒng)通常用以下的宏聲明:*/
decl_subsys(nam e, struct kobj_type *type, struct
kset_uevent_ops * uevent_ops);
/*子系統(tǒng)的操作函數(shù):*/
總結(jié)
以上是生活随笔為你收集整理的linux kset subsystem 3.10内核,Kobject、Kset 和 Subsystem的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python pandas教程百家号_P
- 下一篇: cad常用字体包_CAD制图初学入门如何