内核模块参数更改(使用/ sys/module)

MOH*_*MED 5 c linux kernel-module linux-kernel

我对linux中的/ sys/module /有一些疑问

1)/ sys/module是否包含内核的所有模块

2)/ sys/module/xxx /参数是否包含内核模块xxxx的所有参数

3)/ sys/module/xxx/parameters/yyyy是否包含内核模块xxxx的参数yyyy的实时值

4)如果在给定内核模块中更改参数,如何在RealTime中检测此更改?我想开发一个C应用程序(用户空间)或shell脚本,它实时检测给定内核模块参数的变化.

Con*_*ang 6

1)是的,/ sys/module确实拥有所有模块.

2)不,/ sys/module/xxx/parameters只有模块要导出的参数,也就是说如果你想从模块中导出一些内核模块参数,你应该使用:

module_param(test, bool, 0600);
Run Code Online (Sandbox Code Playgroud)

其中最后一个参数是非零,这意味着文件"/ sys/module/xxx/parameters/test"的权限.

3)不,内核模块参数的值几乎是静态的,很少被其他地方改变.

4)您的内核模块应通知用户空间应用程序.


MOH*_*MED 3

参数是输入值而不是状态值。参数接收者启动后,您将无法更改参数。

如果你想在运行时改变内核的行为,你必须使用/proc/sys。请参阅此处:http://tournasdimitrios1.wordpress.com/2011/02/07/passing-parameters-to-the-kernel-at-run-time-time-on-linux/

  • 那么..以下内容是如何工作的:“写入(0/N/n=disable)到/sys/module/printk/parameters/time”将停止提供时间戳,如下所示 -> [1915.150953]。然后“写入 1/Y/y=enable”将重新启用它。所有这些都在运行时进行。如何 ?? (4认同)