裝置節點檔案建立函式
使用雜項字元裝置註冊裝置驅動時,可以自動建立裝置節點檔案。
但是使用早期字元裝置和標準字元裝置註冊裝置節點檔案時並不能自動建立裝置節點檔案。
猜測:雜項字元裝置註冊函式
中,包含有裝置節點檔案註冊的函式!
雜項字元裝置註冊函式分析: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 :當前檔案中搜尋某乙個字串
裝置節點檔案建立函式
裝置節點檔案建立函式 使用雜項字元裝置註冊裝置驅動時,可以自動建立裝置節點檔案。但是使用早期字元裝置和標準字元裝置註冊裝置節點檔案時並不能自動建立裝置節點檔案。猜測 雜項字元裝置註冊函式 中,包含有裝置節點檔案註冊的函式!雜項字元裝置註冊函式分析 misc register misc registe...
建立裝置節點
書中所使用的是mknod命令手動建立節點,事實上有一組函式支援自動建立裝置節點。核心中定義了struct class結構體,乙個struct class結構體變數對應乙個類,核心提供了class create巨集來建立乙個類。呼叫class create會在 sys class目錄下生成乙個目錄,接...
Android 框架之建立裝置節點檔案
android 與linux一樣使用裝置驅動來訪問硬體裝置,裝置節點檔案是裝置驅動的邏輯檔案,應用程式使用裝置節點檔案來訪問裝置驅動程式,linux使用mknod來建立裝置節點檔案,android 有自己法子。android 使用init 程序來建立裝置節點檔案,分兩種情況 靜態節點檔案和動態節點檔...