參考《linux核心設計與實現》17.3 裝置模型
首先要明確裝置模型的意義何在,才知道核心搞這玩意是在幹嘛。根據書裡的介紹和我自己的理解,核心引入裝置模型的目的如下:
提供引用計數這一類的統一機制
提供拓撲關係
裝置歸類
等等等,(其他的我還沒get到)
struct
kobject
;
根據文章開頭說的裝置模型的意義,注意下邊兩個成員
同時也要留意其中的 *kset 和 *ktype 指標,這兩個都是要指向相應的結構體的。
struct
kobj_type
;
*release 指標負責在kobj引用計數為零時析構kobj。
*sysfs_ops 估計就是掛一些檔案讀寫函式的指標。
**default_attrs 定義了kobj 的預設屬性,這些屬性將作為檔案匯出。(應該就是在sysfs 最底層中常見的一些奇怪且普遍存在的檔案)
struct
kset
__randomize_layout;
裝置驅動模型
linux裝置模型中三個很重要的概念就是匯流排 裝置和驅動,即bus,device和driver。它們分別對應的資料結構分別為struct bus type,struct device和struct device driver。struct device 操作函式 註冊 int device reg...
裝置驅動模型
隨著技術的不斷進步,系統的拓撲結構也越來越複雜,對智慧型電源管理 熱插拔的支援要求也越來越高,2.4核心已經難以滿足這些需求。為適應這種形勢的需要,linux 2.6核心提供了全新的核心裝置模型。裝置模型元素 匯流排 驅動裝置 匯流排 匯流排是處理器和裝置之間的通道,在裝置模型中 所有的裝置都通過匯...
Linux裝置模型
linux裝置驅動模型 我們在寫最簡單的裝置驅動程式的時候,我們將所有的硬體資訊都儲存在了驅動 中,這樣有乙個非常明顯的不足 會導致驅動程式的通用性極差,一旦硬體平台或硬體連線有鎖改變,就一定要修改驅動 為了解決這個問題,linux在2.6版本之後,新增了 匯流排 裝置 驅動 的linux裝置模型,...