misc的意思是各式各樣。misc裝置屬於字元裝置,是因為字元裝置多種多樣,很多無法歸類的字元裝置都歸在misc裝置中
misc裝置共享了同乙個主裝置號 misc_major = 10 ,根據不同的次裝置號區分不同的裝置
misc由於共享了同一主裝置號,所以它是自動生成裝置節點的
它的open函式由核心實現好了
一般裝置驅動都離不開幾個步驟,misc裝置驅動也是如此。
定義—->初始化—>註冊–>釋放
小建議:如果我們要編寫什麼裝置的驅動,最好是開啟相應裝置的.h原始碼,這樣對應的操作函式一目了然,如本例中,可以開啟miscdevice.h 標頭檔案來檢視核心提供的函式和結構體。
miscdevice結構體表徵了miscdevice裝置,所以第一步先定義乙個miscdevice裝置。
struct miscdevice misc_demo;
結構體內容為
struct miscdevice ;
初始化即初始化miscdevice結構體
misc.minor = misc_dynamic_minor(系統動態分配乙個次裝置號)
misc.name = "misc_demo"
同時我們也應編寫操作方法集來填充成員const struct file_operations *fops
struct file_operations misc_fops =
misc.fops = &misc_fops;
註冊和釋放就直接使用了核心提供的函式介面
int misc_register(struct miscdevice *misc);
/*****
*****
*****
*****
*****
*****
*****
*****
*****
功能:註冊miscdevice
輸入引數:miscdevice結構體
返回值:成功返回0,失敗返回負的錯誤碼
*****
*****
*****
*****
*****
*****
*****
*****
*****/
int misc_deregister(struct miscdevice *misc);
/*****
*****
*****
*****
*****
*****
*****
*****
*****
功能:釋放miscdevice
輸入引數:miscdevice結構體
返回值:成功返回0,失敗返回負的錯誤碼
*****
*****
*****
*****
*****
*****
*****
*****
*****/
這樣,最簡單的乙個misc裝置驅動就完成了。在實際工作中,我們還需要編寫操作硬體的函式和提供使用者層的函式,對應相應的裝置有著相應的驅動方案。 misc雜項裝置驅動
linux裡面的misc雜項裝置是主裝置號為10的驅動裝置,它的註冊跟使用比較的簡單,所以比較適用於功能簡單的裝置。它有自己的裝置結構體 struct miscdevice 它在標頭檔案linux miscdevice.h裡面有定義,其中minor是misc裝置的副裝置號,misc裝置主要依賴min...
misc裝置驅動模型及例項解析
1 misc裝置驅動模型 本節我們來看一下misc裝置驅動模型的有關內容,首先是看看它的裝置結構體,定義在include linux miscdevice.h中 cpp view plain copy struct miscdevice 結構體中的部分成員我們是一目了然的,主要是來看看有疑惑的幾點 ...
misc裝置驅動模型及例項解析
1 misc裝置驅動模型 本節我們來看一下misc裝置驅動模型的有關內容,首先是看看它的裝置結構體,定義在include linux miscdevice.h中 cpp view plain copy struct miscdevice 結構體中的部分成員我們是一目了然的,主要是來看看有疑惑的幾點 ...