我正在一个模块中为 Linux 编写一个字符设备驱动程序。
我需要使用模块参数数组来显示有关打开设备的一些状态信息,但这无法正常工作。我还使用了一个 int 参数(不是数组),它们的初始化如下:
static int open_permissions[3] = {1,2,3};
static int count;
module_param_array(open_permissions, int, &count, 0660);
static int allow_live_bait = 1; /* default to on */
module_param(allow_live_bait, int, 0660); /* a int type */
/sys/module/mymodule/parameters
现在,这些参数按应有的方式列在 VFS中。如果我allow_live_bait
使用文本编辑器打开参数,它会正确显示数字1
,但如果我打开open_permissions
参数(始终使用文本编辑器),它不会显示任何内容。
此外,这不是初始化不正确的问题,因为我尝试像这样在 init_module 函数中打印数组的值,并且它们已正确初始化:
for(j = 0;j<3;j++){
printk("%s : open permission %d : %d",MODNAME,j,open_permissions[j]);
}
我想知道的是,这是否是使用数组参数时的正常行为,或者我做错了什么。