聲明一變量 linux
module_param(name, type, perm);數組
name既是用戶看到的參數名,又是模塊內接受參數的變量;ui
type表示參數的數據類型,是下列之一:byte, short, ushort, int, uint, long, ulong, charp, bool, invbool;spa
perm指定了在sysfs中相應文件的訪問權限。訪問權限與linux文件愛你訪問權限相同的方式管理,如0644,或使用stat.h中的宏如S_IRUGO表示。指針
0表示徹底關閉在sysfs中相對應的項。orm
也能夠使模塊源文件內部的變量名與外部的參數名有不一樣的名字,經過module_param_named()定義。內存
module_param_named(name, variable, type, perm);ci
name是外部可見的參數名,字符串
variable是源文件內部的全局變量名,而module_param經過module_param_named實現,只不過name與variable相同。string
另外一種方法是經過宏module_param_string()讓內核把字符串直接複製到程序中的字符數組內。
module_param_string(name, string, len, perm);
這裏,name是外部的參數名,
string是內部的變量名,
len是以string命名的buffer大小(能夠小於buffer的大小,可是沒有意義),
perm表示sysfs的訪問權限(或者perm是零,表示徹底關閉相對應的sysfs項)。
若是須要傳遞多個參數能夠經過宏module_param_array()實現。外部參數內部調用;
module_param_array(name, type, nump, perm);
name既是外部模塊的參數名又是程序內部的變量名,
type是數據類型,
perm是sysfs的訪問權限。指針nump指向一個整數,其值表示有多少個參數存放在數組name中。值得注意是name數組必須靜態分配。
模塊參數支持許多類型:
bool
invbool
一個布爾型( true 或者 false)值(相關的變量應當是 int 類型). invbool 類型顛倒了值,因此真值變成 false, 反之亦然.
charp
一個字符指針值. 內存爲用戶提供的字串分配, 指針所以設置.
int
long
short
uint
ulong
ushort
基本的變長整型值. 以 u 開頭的是無符號值.
數組參數, 用逗號間隔的列表提供的值, 模塊加載者也支持. 聲明一個數組參數, 使用:
module_param_array(name,type,num,perm);
這裏 name 是你的數組的名子(也是參數名),
type 是數組元素的類型,
num 是一個整型變量,
perm 是一般的權限值.
若是數組參數在加載時設置, num 被設置成提供的數的個數. 模塊加載者拒絕比數組能放下的多的值.