1、 kset
kset是具有相同型別的kobject的集合,在sysfs中體現成乙個目錄,在核心中用kset資料結構表示,定義為:
2、 kset操作
1)int kset_register(struct kset *kset)
在核心中註冊乙個kset
2)void kset_unregister(struct kset *kset)
從核心中登出乙個kset
3、 熱插拔事件
在linux系統中,當系統配置發生變化時,如:
新增kset到系統;移動kobject, 乙個通知會
從核心空間傳送到使用者空間,這就是熱插拔事
件。熱插拔事件會導致使用者空間中相應的處
理程式(如udev,mdev)被呼叫, 這些處理程式
會通重載入驅動程式, 建立裝置節點等來響應
熱插拔事件。
4、熱插拔事件操作集合
struct kset_uevent_ops
kset_uevent_ops
這三個函式什麼時候呼叫?
當該kset所管理的kobject和kset狀態發生
變化時(如被加入,移動),這三個函式
將被呼叫。
(例:kobject_uevent呼叫)
這三個函式的功能是什麼?
1)filter:決定是否將事件傳遞到使用者空間。如果filter
返回0,將不傳遞事件。(例: uevent_filter)
2)name:用於將字串傳遞給使用者空間的熱插拔處理程式。
3)uevent:將使用者空間需要的引數新增到環境變數中。
(例:dev_uevent)
5、 kset例項分析
#include
#include
#include
#include
#include
#include
#include
#include
module_author("yinjiabin");
module_license("gpl");
struct kset *kset_p;
struct kset kset_c;
/* 函式宣告 */
Linux驅動之裝置模型 3
4 小結 4.1 kobject,kset和ktype kobject,kset和ktype就三個結構體,但是卻很容易讓人混淆,是由於它們內部相互交織。l kobject,是裝置模型中的基本物件,包含了引用計數,父子關係,目錄項等,通常會嵌入到其它的資料結構中,使其也具有kobject的特性 l k...
Linux驅動之裝置模型 5
6 裝置 6.1 裝置 l linux裝置模型中每乙個裝置用device結構來表示 struct device 6.2 裝置屬性 l 裝置屬性由device attribute來表示 structdevice attribute device attr name,mode,show,store l ...
Linux驅動之裝置模型 8
9 小結 9.1 匯流排,裝置,驅動和類之間的關係 l 匯流排相當於乙個容器,是device和device driver的管理機構,它包含了乙個device集合 devices kset 和乙個驅動集合 drivers kset 分別表示掛依附於此匯流排的所有裝置和所有驅動。l 驅動依附在匯流排上,...