linux裝置驅動模型之 kset原理與例項分析

2021-06-06 14:27:40 字數 2467 閱讀 9865

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 驅動依附在匯流排上,...