我可以在INSMOD或MODPROBE期间将参数传递给驱动程序吗?

时间:2014-05-02 10:30:38

标签: linux linux-kernel linux-device-driver

我目前正在使用一个USB设备驱动程序,在其中我使用probe()函数创建了一个Kthread。一般的kthread_create()函数在最不忙的CPU上创建线程。

我想要做的是在特定的CPU(kthread_create_on_cpu())上创建kthread,这样我就可以将单独的内核分配给处理输出设备的设备线程。
如何在加载模块/驱动程序时将CPU编号传递给模块。

我可以使用一个全局变量,该变量将在系统启动时设置一次,并由驱动程序读取或在加载时将CPU编号传递给模块。

请建议使用和实施哪种方法更为可行。

谢谢和问候,
Mitesh G

1 个答案:

答案 0 :(得分:2)

您可以传递命令行参数。为此,您必须在模块中添加module_parammodule_param_array

根据您的要求,在您的模块中添加这些行

int myintdata = 100; module_param(myintdata, int, 0);

char mychardata = 'A'; module_param(mychardata, char, 0);

int myarray[2]; module_param_array(myarray, int, NULL, 0);

static char *name; module_param(name, charp, 0); //这里你必须提到charp作为数据类型

字符串

module_param_string(name, string, len, perm);

插入模块时

insmod module_name.ko myintdata=5 mychardata = 'X' name= "xyz" myarray =99,100  `