我对linux中的/sys/module/
/sys/module
是否包含内核的所有模块
/sys/module/xxx/parameters
是否包含内核模块的所有参数xxxx
/sys/module/xxx/parameters/yyyy
是否包含内核模块参数yyyy的实时值xxxx
如果在给定内核模块中更改参数,如何在RealTime中检测此更改?我想开发一个C应用程序(用户空间)或shell脚本,它实时检测给定内核模块参数的变化。
答案 0 :(得分:6)
1)是的,/ sys / module确实拥有所有模块。
2)不,/ sys / module / xxx / parameters只有模块要导出的参数,也就是说如果要从模块中导出一些内核模块参数,你应该使用:
module_param(test, bool, 0600);
其中最后一个参数为非零,表示文件的权限" / sys / module / xxx / parameters / test"。
3)不,内核模块参数的值几乎是静态的,很少被其他地方改变。
4)您的内核模块应通知用户空间应用程序。
答案 1 :(得分:0)
"最后(和这一点很重要),如果您选择定义可写参数并且在加载模块时确实写入它们,则不会通知您的模块值已更改。也就是说,修改后的参数没有回调或通知机制;当代码保持运行时,值将在模块中悄然发生变化,忽略了该变量中有新值的事实。
如果您确实需要对模块的写访问权以及某种通知机制,您可能不想使用参数。有更好的方法来获得这种功能。" [1]
基本上,您需要一种机制来不断轮询更改,或者您应该开发一种IOCtl方法并将您的设备注册为char设备,同时注册其他任何内容(Linux在这方面是精神病的) )。
布莱恩威尔克特 "如果你不重视自己的时间,Linux是免费的。" - 未知