sysfs
關於裝置驅動和裝置管理,主要討論四種核心成分
1.在linux中,裝置主要分為:
另外有些裝置是虛擬的,我們叫做偽裝置,比如空裝置/dev/null,零裝置/dev/zero
模組就是在linux執行時可以動態插入和刪除**,這樣可以使基本核心可以盡可能的小,比如乙個驅動程式
統一裝置模型提供了乙個專門的機制來表示裝置,並描述其在系統中的拓撲結構,主要優點如下:
kobject
kobject是裝置模型的核心,它通常嵌入其它結構,來使其它結構擁有統一裝置模型的特徵,比如我們將它嵌入到cdev的結構體:
然後我們來看kobject結構體:
kobject的主要功能是提供了乙個統一的引用計數kref,初始化後,kobject引用計數為1,,就留在記憶體中,如果有乙個物件引用kobject,那麼引用計數就加1,當引用計數為0時,物件被撤銷並釋放記憶體
ktype
ktype就是描述一種普遍的特性,我們可以擁有同一普遍特性的kobject引用同乙個ktype
kset
kset表示一組kobject的集合,kobject通過kset組織成層次化的結構
它可以將相關的kobject組成乙個kset,當成sysfs的乙個節點
sysfs檔案系統是乙個處於記憶體中的虛擬檔案系統,它為我們提供了kobject物件層次結構檢視,它替代了/proc下的裝置相關檔案
另外,目錄層次可以使kset或者kobj:
分析目錄結構時把kset當成乙個普通的kobj會好理解很多
Linux核心模組
核心模組 在整個啟動的過程中,是否能成功的驅動我們主句的硬體裝置,是核心完成的工作,而核心一般都是壓縮文件,在使用之前核心之前必須要將核心減壓到的記憶體中。為了應對日新月異的硬體,目前核心都具有可讀取模組化驅動程式的功能,也就是所謂的 modules模組化 所謂模組化。核心與核心模組放在 核心 bo...
Linux核心模組
1 核心模組註冊登出 塊載入函式有返回值,模組解除安裝函式無返回值。兩者都是無參函式,載入函式用 init修飾,解除安裝函式用 exit修飾。define init attribute section init.text define exit atrribute section exit,text...
Linux 核心模組
linux 核心模組程式結構 1 模組載入函式 2 模組解除安裝函式 3 模組許可證宣告 4 模組引數 5 模組匯出符號 6 模組作者等資訊宣告 模組載入函式 一般以 init 標識 在 linux 中,所有標識為 init 的函式如果直接編譯進核心,成為核心映象的一部分,在連線的時候都會放在 in...