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裝置主要針對沒有多個同類裝置的驅動程式
作者:柒月