天天看點

⭐linux主次裝置号介紹

1、主裝置号與次裝置号的功能

在Linux核心中,主裝置号辨別裝置對應的驅動程式,告訴Linux核心使用哪一個驅動程式為該裝置(也就是/dev下的裝置檔案)服務;而次裝置号則用來辨別具體且唯一的某個裝置。

比如說在linux的終端打入指令:

會出現很多的檔案清單,這裡舉例字元串裝置檔案【字元串裝置的開頭表示為c,當然塊裝置表示為b】,這些檔案可以稱為檔案系統書的節點,都是位于/dev目錄下。另外上面2行中的數字,4【紫紅表示】,0,1【藍色表示】分别表示的是該裝置的主裝置号,次裝置号。一個主裝置号和一個次裝置号就組成了該裝置的唯一辨別符。雖然現在的linux核心允許多個驅動程式共享主裝置号,但是現在大多數的裝置仍然按照“一個主裝置号對應一個驅動程式”的原則組織。次裝置号用來指向驅動程式所實作的裝置,核心本身基本上不會去關心關于次裝置号的任何其他資訊。

檢視系統已經配置設定的主裝置有哪些:

2、裝置編号的内部表達

裝置号的類型是dev_t類型(2.4核心為kdev_t),在<linux/coda.h>中定義。

typedef  unsigned  long        dev_t ;

其中dev_t是一個32位的數,12位表示主裝置号,另外20位表示次裝置号。

2.6核心把主裝置号由8位擴充到12位,而次裝置号由8位擴充到20位。

擷取主裝置号和次裝置号的方法如下:

在<linux/kdev_t.h> 中以上宏的定義如下:

 根據主裝置号major和次裝置号minor建構裝置号(轉換成dev_t的類型),可以使用

3、雜項裝置的介紹

misc裝置,主裝置号為10,函數注冊的方式也不一樣。使用如下:

上面的函數需指定miscdevice結構體,

在#include <linux/miscdevice.h>中定義:

 開發人員必須定義的filed包括:minor ,name 及fops如下:

 可以通過#cat /proc/misc來檢視misc裝置的注冊情況。

misc裝置主要針對沒有多個同類裝置的驅動程式

作者:​​柒月​​

繼續閱讀