linux裝置模型學習總結

2021-05-26 17:52:55 字數 771 閱讀 1680

這幾天對linux裝置模型做了乙個簡單的了解,雖然沒有深入學習,但是為了防止遺忘,先做個初步總結。

一,基類抽象,kobject、kset

linux裝置模型運用了一些物件導向的思想,處於抽象等級最底層的就是kobject了,可以說kobject就是那個基類了,只不過這裡的繼承關係是通過將kobject嵌入其他物件中而得以實現的。kobject主要是用來處理物件的引用計數,sysfs表述以及熱插拔事件處理的。而kset則可以看做是kobject的乙個集合,不過這裡比較特殊的時,kset本身也可看做是kobject(因為其內部嵌有kobject),而子系統subsys的概念在最新的linux系統中已經沒有了

二,匯流排級抽象

1. 在linux裝置模型中,匯流排用struct bus_type來表示,乙個匯流排包含兩個kset,分別代表了匯流排的驅動程式及匯流排的裝置。匯流排向驅動程式核心註冊後,在/sys/bus下可以找到其目錄項。

2. linux系統的每乙個裝置都用乙個struct device例項來表示,裝置的註冊及登出使用device_register, device_unregister。通常情況下對子系統來說單純用device結構表示的裝置很少見,而是把device結構內嵌在高層裝置結構中。可以看做是對device結構的一種繼承,譬如input_dev等。而對於input子系統的具體裝置來說,又需要進一步的繼承。

3. 與裝置相同,linux系統用struct  device_driver來表示驅動程式,同樣的,其通常也會有兩級的繼承結構。

4. 此外,需要注意匯流排本身也是乙個裝置

三,類檢視

linux裝置驅動模型 學習

裝置驅動分類 證明linux 一切皆檔案 思想 dev 目錄 存放裝置所對應的檔案 目錄下的每乙個檔案對應乙個裝置 linux是乙個樹型結果,沒有分割槽概念 比如 sda1 就對應在跟目錄下 linux裝置驅動模型 匯流排 裝置 與平台相關,平台資訊,移植是改這個部分 驅動 是跨平台的,不需要任何改...

Linux裝置模型

linux裝置驅動模型 我們在寫最簡單的裝置驅動程式的時候,我們將所有的硬體資訊都儲存在了驅動 中,這樣有乙個非常明顯的不足 會導致驅動程式的通用性極差,一旦硬體平台或硬體連線有鎖改變,就一定要修改驅動 為了解決這個問題,linux在2.6版本之後,新增了 匯流排 裝置 驅動 的linux裝置模型,...

linux裝置模型

linux核心的整體架構 linux裝置模型 linux裝置模型 1 基本概念 linux裝置模型 2 kobject linux裝置模型 3 uevent linux裝置模型 4 sysfs linux裝置模型 5 device和device driver linux裝置模型 6 bus linu...