您的位置:首页 > 运维架构 > Linux

Linux 内核模块参数学习module_param

2016-01-15 15:21 936 查看

Linux 内核模块参数学习module_param

module_param(参数名,参数类型,参数读写权限)

byte

short

ushort

int

uint

long

ulong

charp(字符指针)

bool

invbool(布尔的反)

注意

PS:今天在使用charp的时候对此理解有误,使用了如下定义方式:

[code]char buff[1024] = "Hello World\n This is a Test!\n";
module_param(buff,charp,0644);


加载的时候是木有问题的,但是我到/sys/module/xxx/parameter/下面看buff这个文件的时候,系统立马崩掉!

所以这样的用法是严重不对的,正确的用法是:

[code]char *str = "Hello World!"
module_param(str,charp,0666);


可是我们需要修改显示内容怎么办??这里的Hello World!为常量,是只读的,不能被修改的!怎么办?还好str是可以修改的,我们重新把buff用起来,对代码修改下:

[code]char *str = "Hello World!"
module_param(str,charp,0666);
char buff[1024] = "Hello World\n This is a Test!\n";

void TestFunction()
{
str = buff;
}


按照上面的方法,再到/sys/module/xxx/parameter/下看变量的时候,就不会崩掉了!

崩掉的主要原因是:charp为字符串指针,而不为数组指针!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: