Linux 内核模块参数学习module_param

Linux 内核模块参数学习module_param

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

  • byte
  • short
  • ushort
  • int
  • uint
  • long
  • ulong
  • charp(字符指针)
  • bool
  • invbool(布尔的反)

注意

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

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

加载的时候是木有问题的,但是我到/sys/module/xxx/parameter/下面看buff这个文件的时候,系统立马崩掉!
所以这样的用法是严重不对的,正确的用法是:

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

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

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为字符串指针,而不为数组指针!!!

你可能感兴趣的:(内核模块参数)