回過頭看看我們以前寫的驅動程式
隨便看一個
為什麼要建立類 為什麼要在類下面建立裝置呢
為了讓mdev根據這些資訊來建立裝置節點
我們來看看device_create憑什麼可以讓mdev建立裝置節點
然後進入這個device_create_vargs
然後我們會看見關鍵性函數 device_register
然後進入device_add
同樣是進入關鍵函數
kobjece_uevent這個函數
進入這個函數
一步一步進入
然後同樣找到關鍵函數
這裡將action_string這個指標指向"add"
然後在
先為環境變數分配一個緩衝區
然後設定環境變數
環境變數是什麼東西
在你的開發板上輸入env
這些都是環境變數
這個環境變數是我們shell程式,就是根據我們輸入來執行程式的那個shell程式的環境變數
ps看看
就是這個的環境變數
每一個應用程式都有環境變數
如果這個變數有資料的話 call_usermodehelper
這個是幹啥呢
調用應用程式,這個應用程式是什麼,比如mdev 假設argv[0]=uevent_helper=mdev
調用使用者模式的helper,就是建立一個進程,傳入傳輸,環境變數,這個應用程式會根據這個環境變數建立裝置節點
我們來列印,看看這個是不是等於mdev
修改代碼如下
然後重新編譯核心燒寫
然後我們insmod一個驅動
輸出資訊如下(由於現在沒網,只能截wds的圖)
然後就會得到
他會根據這些資訊建立裝置節點
接著分析 busybox mdev_main()
如果他不是mdev -s mdev -s是什麼意思呢。
就是它掃描,我們一開始啟動的時候
我們cat /etc/init.d/rcS
這裡就有mdev -s
掃描這個/sys這個目錄,產生這個目錄 當系統啟動的時候 根據這個裡面的資訊來建立裝置
我們不是這個這一項
獲得環境變數
action = add
我們這裡是OP_add
所以進入下面這個make_device
這個函數裡面我們看主要的
在這裡建立裝置節點
我們看node_name是怎麼建立的