Linux Device Driver - module parameter
前篇 : Linux Device Driver - Hello World - 2
在 Linux Device Driver 3rd 的 2.8 章, 介紹 module parameter 寫法.
對照範例程式放在 : github :
https://github.com/neojou/linuxdevicedriver/tree/master/testwifi-3-helloworld
假如我們要用 module parameter 方式, 設計一個 debug level 參數,
我們可以用 module_param() 方式來做 :
在 os_dep/linux/os_intfs.c
1. 宣告一個變數, 型態為 uint
2. module_param()
在 Linux Device Driver 3rd 的 2.8 章, 介紹 module parameter 寫法.
對照範例程式放在 : github :
https://github.com/neojou/linuxdevicedriver/tree/master/testwifi-3-helloworld
假如我們要用 module parameter 方式, 設計一個 debug level 參數,
我們可以用 module_param() 方式來做 :
在 os_dep/linux/os_intfs.c
1. 宣告一個變數, 型態為 uint
uint rtw_drv_log_level;
2. module_param()
module_param(rtw_drv_log_level, uint, 0644);
第一個參數是 變數名稱
第二個參數是 變數型態
可以有 bool / invbool / charp / int / long / short / uint / ulong / ushort
第三個參數是 權限值
在 做完 sudo insmod ./88x2bu.ko 後
會產生 /sys/module/88x2bu/parameters/rtw_drv_log_level 這個檔案,
而這權限值, 就是這檔案的存取權 ( 數值和 chmod 時一樣 )
主要是 read/write 權限, root可以設定 write, 對其他人不能設 write 但可設 read.
這個變數檔案也挺有趣的, 我們可以在 module_init 的函式那邊顯示變數的方式,
也同樣在 module_exit 的函式印出變數值.
可以發現 insmod 完成時, dmesg 顯示 4,
接著切換成 root , 做 echo 6 > /sys/module/88x2bu/parameters/rtw_drv_log_level
rmmod 後, dmesg 顯示 此變數會變成 6
--
執行
sudo insmod ./88x2bu.ko rtw_drv_log_level=8
dmesg 顯示
module init start : 8
module init ret=0
留言
張貼留言