為了增加驅(qū)動(dòng)程序的靈活性,內(nèi)核允許對(duì)驅(qū)動(dòng)程序指定參數(shù),而這些參數(shù)可在加載驅(qū)動(dòng)程序模塊時(shí)改變。
這些參數(shù)的值可由insmod或者modprobe在加載時(shí)指定;后者也可以從它的配置文件(/etc/modprobe.conf)讀取參數(shù)的值。這兩個(gè)命令可在命令行里接受幾種參數(shù)類型的賦值。 我們可以用“module_param(參數(shù)名,參數(shù)類型,參數(shù)讀/寫(xiě)權(quán)限)”為模塊定義參數(shù)。為了演示這種功能,我們對(duì)本章開(kāi)始的“hello world”模塊(命名為hello_ext)做了如代碼清單1.5所示的改進(jìn)。 我們?cè)黾?個(gè)參數(shù):一個(gè)整型值,稱為howmany,一個(gè)字符串稱為whom。 在裝載這個(gè)增強(qiáng)的模塊時(shí),將向whom問(wèn)候howmany次。這樣我們可以用下面的命令來(lái)裝載該模塊: insmod hello_ext.ko howmany=5 whom=“Students” 代碼清單1.4 hello_ext #include <linux/init.h>#include <linux/module.h>MODULE_LICENSE(“Dual BSD/GPL”); static char *whom =“world”;static int howmany = 1; static int hello_init(void){ int i; for(i=0;i<howmany;i++) { printk(KERN_ALERT“Hello %s\n”,whom); } return 0;}static void hello_exit(void){ printk(KERN_ALERT“Hello world exit\n”);}module_init(hello_init);module_exit(hello_exit);module_param(howmany, int, S_IRUGO);module_param(whom, charp, S_IRUGO);EXPORT_SYMBOL(howmany);EXPORT_SYMBOL(whom); 內(nèi)核支持的模塊參數(shù)類型包括byte、short、ushort、int、uint、long、ulong、charp(字符指針)、bool或invbool(布爾的反),以‘u’開(kāi)頭的為無(wú)符號(hào)值。 除此之外,模塊也可以擁有參數(shù)數(shù)組,形式為“module_param_array(數(shù)組名,數(shù)組類型,數(shù)組長(zhǎng),參數(shù)讀/寫(xiě)權(quán)限)”。運(yùn)行insmod或modprobe命令時(shí),應(yīng)使用逗號(hào)分隔輸入的數(shù)組元素。 轉(zhuǎn)自嵌入式學(xué)習(xí)網(wǎng)!
原文地址:http://www./viewnews-8458 |
|
來(lái)自: seligor > 《我的圖書(shū)館》