為了增加驅(qū)動程序的靈活性,內(nèi)核允許對驅(qū)動程序指定參數(shù),而這些參數(shù)可在加載驅(qū)動程序模塊時改變。
這些參數(shù)的值可由insmod或者modprobe在加載時指定;后者也可以從它的配置文件(/etc/modprobe.conf)讀取參數(shù)的值。這兩個命令可在命令行里接受幾種參數(shù)類型的賦值。 我們可以用“module_param(參數(shù)名,參數(shù)類型,參數(shù)讀/寫權(quán)限)”為模塊定義參數(shù)。為了演示這種功能,我們對本章開始的“hello world”模塊(命名為hello_ext)做了如代碼清單1.5所示的改進。 我們增加2個參數(shù):一個整型值,稱為howmany,一個字符串稱為whom。 在裝載這個增強的模塊時,將向whom問候howmany次。這樣我們可以用下面的命令來裝載該模塊: 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’開頭的為無符號值。 除此之外,模塊也可以擁有參數(shù)數(shù)組,形式為“module_param_array(數(shù)組名,數(shù)組類型,數(shù)組長,參數(shù)讀/寫權(quán)限)”。運行insmod或modprobe命令時,應使用逗號分隔輸入的數(shù)組元素。 轉(zhuǎn)自嵌入式學習網(wǎng)!
原文地址:http://www./viewnews-8458 |
|