kernel module parameters changes (using /sys/module)
Solution 1
Parameters are input values and not state values. You can not change a parameter after the recipient of the parameter has started.
If you want to change the behavior of the kernel at run time you have to use /proc/sys. See here: http://tournasdimitrios1.wordpress.com/2011/02/07/passing-parameters-to-the-kernel-at-run-time-time-on-linux/
Solution 2
1) Yes, /sys/module indeed has all the modules.
2) No, /sys/module/xxx/parameters only has the parameters the module wants to export, that is to say if you want to export some kernel module parameter from your module, you should use:
module_param(test, bool, 0600);
where the last parameter is non-zero, which means the permission of the file "/sys/module/xxx/parameters/test".
3) No, the value of the kernel module parameter is almost static, rarely changed by other places.
4) Your kernel module shall notify the userspace application.
Solution 3
"Finally (and this one's kind of important), if you choose to define writable parameters and really do write to them while your module is loaded, your module is not informed that the value has changed. That is, there is no callback or notification mechanism for modified parameters; the value will quietly change in your module while your code keeps running, oblivious to the fact that there's a new value in that variable.
If you truly need write access to your module and some sort of notification mechanism, you probably don't want to use parameters. There are better ways to get that functionality." [1]
Basically, you'll need a mechanism to constantly poll for changes or you should just develop an IOCtl approach and register your device as a char device simultaneous to whatever else you are registering it as (Linux is psychotic in that respect).
Bryan Wilcutt "Linux is free if you don't value your own time." -- Unknown
Comments
-
MOHAMED almost 2 years
I have some questions concerning the
/sys/module/
in linuxDoes the
/sys/module
contain all modules of kernelDoes the
/sys/module/xxx/parameters
contains all parameters of the kernel module xxxxDoes the
/sys/module/xxx/parameters/yyyy
contain realtime values of the parameter yyyy of the kernel module xxxxif a parameter is changed in a giving kernel module, how to detect this change in RealTime? I want to develop a C application (user space) or a shell script which detect the change of a giving kernel module parameter in real time.