裝置驅動模型的實現

2021-09-25 13:49:49 字數 968 閱讀 7233

1.主要完成的工作:在合適的時間對驅動進行安裝,對驅動的函式進行呼叫;

2.模型的實現主要依靠四個結構體:類class、匯流排bus、裝置device、驅動driver;

3.驅動模型的底層架構:kobject、kobj_type、kset.

驅動模型的底層架構的具體分析:

1.kobject:定義在 linux/kobject.h中,

(1)包含各種物件的基本單元;

(2)提供一些公用型服務如:物件引用計數(幫助維護驅動的生命週期)、維護物件鍊錶(遍歷驅動)、物件上鎖(敏感操作的競爭狀態的避免)、對使用者空間的表示(在sysfs中可以看見裝置驅動)。

(3)在裝置驅動模型中的各種物件其內部都會包含乙個kobject 。

(4)地位類似於物件導向的的體系架構中總基類。

struct kobject ;
2.kobj_type:

struct kobj_type ;
(1)每乙個kobject都需要繫結乙個ktype來提供相應功能;

(2)sysfs_ops,提供該物件在sysfs中的操作方法(show和store);

(3)attribute,提供在sysfs中以檔案形式存在的屬性,其實就是應用介面

3.kset

(1)做頂層kobject的容器類;

(2)是將各個kobject(代表著各個物件)組織出目錄層次架構;

(3)可以認為kset就是為了在sysfs中生成目錄,從而讓裝置驅動模型中的多個物件能夠有層次有邏輯性的組織在一起。

總結:合起來完成sysfs中的檔案以及檔案相關的操作,而kobject是實現的軟體基礎,kobj_type是sysfs中每乙個檔案的實現和檔案對應實際操作的實現,kset負責構建整個sysfs的目錄架構。

裝置驅動模型

linux裝置模型中三個很重要的概念就是匯流排 裝置和驅動,即bus,device和driver。它們分別對應的資料結構分別為struct bus type,struct device和struct device driver。struct device 操作函式 註冊 int device reg...

裝置驅動模型

隨著技術的不斷進步,系統的拓撲結構也越來越複雜,對智慧型電源管理 熱插拔的支援要求也越來越高,2.4核心已經難以滿足這些需求。為適應這種形勢的需要,linux 2.6核心提供了全新的核心裝置模型。裝置模型元素 匯流排 驅動裝置 匯流排 匯流排是處理器和裝置之間的通道,在裝置模型中 所有的裝置都通過匯...

匯流排,裝置,驅動的裝置模型

kobject,kset是裝置模型的基本結構體,裝置模型使用這兩個結構體來完成裝置的層次關係,但在實際的裝置驅動編寫中,我們基本上用不到kobject,kset這些結構體,是因為這些結構體又被嵌入到更大的結構體中,原因在於kobject,kset結構體只能表徵裝置的層次關係,但是乙個裝置的驅動,並不...