kernel module parameters changes (using /sys/module)

10,564

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

[1] https://www.linux.com/learn/linux-training/28065-the-kernel-newbie-corner-everything-you-wanted-to-know-about-module-parameters

Share:
10,564
MOHAMED
Author by

MOHAMED

Contact me on LinkedIn.

Updated on June 05, 2022

Comments

  • MOHAMED
    MOHAMED almost 2 years

    I have some questions concerning the /sys/module/ in linux

    1. Does the /sys/module contain all modules of kernel

    2. Does the /sys/module/xxx/parameters contains all parameters of the kernel module xxxx

    3. Does the /sys/module/xxx/parameters/yyyy contain realtime values of the parameter yyyy of the kernel module xxxx

    4. if 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.