裝置節點的動態建立

2021-05-23 01:15:54 字數 601 閱讀 3302

我們在剛開始寫linux裝置驅動程式的時候,很多時候都是利用mknod命令手動建立裝置節點,實際上linux核心為我們提供了一組函式,可以用來在模組載入的時候自動在/dev目錄下建立相應裝置節點,並在解除安裝模組時刪除該節點,當然前提條件是使用者空間移植了udev。

核心中定義了struct class結構體,顧名思義,乙個struct class結構體型別變數對應乙個類,核心同時提供了class_create(…)函式,可以用它來建立乙個類,這個類存放於sysfs下面,一旦建立好了這個類,再呼叫device_create(…)函式來在/dev目錄下建立相應的裝置節點。這樣,載入模組的時候,使用者空間中的udev會自動響應device_create(…)函式,去/sysfs下尋找對應的類從而建立裝置節點。

注意,在2.6較早的核心版本中,device_create(…)函式名稱不同,是class_device_create(…),所以在新的核心中編譯以前的模組程式有時會報錯,就是因為函式名稱不同,而且裡面的引數設定也有一些變化。

struct class和device_create(…) 以及device_create(…)都定義在/include/linux/device.h中,使用的時候一定要包含這個標頭檔案,否則編譯器會報錯。

建立裝置節點

書中所使用的是mknod命令手動建立節點,事實上有一組函式支援自動建立裝置節點。核心中定義了struct class結構體,乙個struct class結構體變數對應乙個類,核心提供了class create巨集來建立乙個類。呼叫class create會在 sys class目錄下生成乙個目錄,接...

linux dev 下裝置節點建立

linux kernel從 2.6 到 3.0 3.4 devfs已經被拋棄。kernel互動的方式有 sysfs procfs 還有就是 dev下的節點,這些節點是如何被建立出來的呢。研究了半天,在kernel device create 看了遍,也只是發現建立了一堆sysfs節點和一些link。...

裝置節點檔案建立函式

裝置節點檔案建立函式 使用雜項字元裝置註冊裝置驅動時,可以自動建立裝置節點檔案。但是使用早期字元裝置和標準字元裝置註冊裝置節點檔案時並不能自動建立裝置節點檔案。猜測 雜項字元裝置註冊函式 中,包含有裝置節點檔案註冊的函式!雜項字元裝置註冊函式分析 misc register misc registe...