kobject,kset,子系統層次結構
核心通常用kobject 結構將各個物件連線起來組成乙個分層的結構體系。
parent 是指向另外乙個kobject 結構(分層結構中上一層的節點)的指標,主要用途是在 sysfs 層次中定位物件.
乙個 kset 是嵌入到相同型別結構的 kobject 的集合。但 struct kobj_type 關注的是物件的型別,而struct kset 關心的是物件的集合,可認為kset是kobjects 的頂層容器類。每個 kset 在內部包含自己的 kobject, 並可以用多種處理kobject 的方法處理kset。 kset總是在 sysfs 中出現; 一旦設定了 kset 並把它新增到系統中, 將在 sysfs 中建立乙個目錄;kobjects 不必在 sysfs 中表示, 但kset中的每乙個 kobject 成員都在sysfs中得到表述。
增加 kobject 到 kset 中去,通常是在kobject 建立時完成,其過程分為3步:
(1)完成kobject的初始化,特別注意entry,parent的初始化。
(2)把kobject 的 kset 成員指向目標kset。
(3)將kobject 傳遞給下面的函式:
int kobject_add(struct kobject *kobj); /*函式可能失敗(返回乙個負錯誤碼),程式應作出相應地反應*/
核心提供了乙個組合函式:
extern int kobject_register(struct kobject *kobj); /*僅僅是乙個 kobject_init 和 kobject_add 的結合,其他成員的初始化必須在之前手動完成*/
當把乙個kobject從kset中刪除以清除引用時使用:
void
kobject_unregister
(struct kobject *kobj); /*是 kobject_del 和 kobject_put 的結合*/
kset 在乙個標準的核心鍊錶中儲存了它的子節點,在大部分情況下, 被包含的 kobjects 在它們的 parent 成員中儲存指向 kset內嵌的 kobject的指標,關係如下:
input子系統應用層(一)
一 input子系統架構 linux系統提供了input子系統,按鍵 觸控螢幕 鍵盤 滑鼠等輸入都可以利用input介面函式來實現裝置驅動,下面是input子系統架構 input驅動程式的主裝置號是13 次裝置號的分布如下 joystick遊戲杆 0 16 mouse滑鼠 32 62 mice滑鼠 ...
輸入子系統
驅動函式操作步驟 在初始化函式中 1.分配乙個input dev結構體 struct input dev buttons dev buttons dev input allocate device 2.設定 2.1 能產生哪類事件 set bit ev key,buttons dev evbit s...
中斷子系統
linux kernel的中斷子系統之 一 綜述 linux kernel的中斷子系統之 二 irq domain介紹 linux kernel的中斷子系統之 三 irq number和中斷描述符 linux kernel的中斷子系統之 四 high level irq event handler ...