設備節點文件創建函數
使用雜項字符設備註冊設備驅動時,可以自動創建設備節點文件。
但是使用早期字符設備和標準字符設備註冊設備節點文件時並不能自動創建設備節點文件。
猜測:雜項字符設備註冊函數中,包含有設備節點文件註冊的函數!
雜項字符設備註冊函數分析:misc_register();
misc_register();
--> device_create(misc_class, misc->parent, dev, misc, "%s", misc->name);
......
分析雜項字符設備註冊函數,得到設備節點文件創建函數:device_create();
device_create();
函數原型:struct device *device_create(struct class *class, struct device *parent,
dev_t devt, void *drvdata, const char *fmt, ...);
函數功能:根據提供的設備號,在文件系統/dev/目錄下創建設備節點文件
形參列表:
class:類 -- 在文件系統中用來管理設備節點文件的類
parent:當前設備的父設備 -- (無:NULL)
devt:設備號 -- 創建設備節點文件所關聯的設備號
drvdata:當前設備驅動的私有數據 -- 任何數據(無:NULL)
const char *fmt, ... :設備節點文件名(格式化字符串傳參)
返回值:
成功:當前設備的設備結構體指針
失敗:錯誤碼
刪除設備節點文件:void device_destroy(struct class *class, dev_t devt);
class_create();
函數原型:struct class* class_create(struct module *owner, const char *name);
函數功能:在文件系統中創建一個類,用來管理一類設備節點文件。 (創建目錄:/sys/class/)
形參列表:
owner:THIS_MODULE
name:類的名稱
返回值:
成功:創建出來的類的結構體指針
失敗:錯誤碼
刪除類:void class_destroy(struct class *cls);
只要在早期字符設備或標準字符設備的設備驅動中,在設備註冊成功之後,調用class_create()和device_create()。這樣早期字符設備驅動和標準字符設備驅動也將能夠自動創建設備節點文件。
補充:
source insight使用技巧:
ctrl + 鼠標左鍵:跳轉到定義處
ctrl + /:整個工程搜索某一個字符串
ctrl + f:當前文件中搜索某一個字符串
閱讀更多 嵌入式開發 的文章