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
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


 

留言

熱門文章