虽然我们在全局命名空间中定义了这些变量,但为什么我们需要为声明的每个变量显式指定权限。或者我的思维方式完全错了?
int number = 100;
module_param(number, int , 0); // module_param(variable_name, variable_type , permissions);
' 0'在权限属性中实际意味着什么?
答案 0 :(得分:6)
此权限标记值控制谁可以访问sysfs中模块参数的表示形式。如果perm设置为0,则根本没有sysfs条目;否则,它出现在具有给定权限集的 / sys / module 下。
使用 S_IRUGO 作为可由世界读取但无法更改的参数;
S_IRUGO | S_IWUSR 允许root更改参数。请注意,如果参数由 sysfs 更改,则模块看到的该参数的值会更改,但不会以任何其他方式通知您的模块。您可能不应该使模块参数可写,除非您准备检测更改并做出相应的反应。
perm = 0 的唯一用途就是你可以在模块加载时设置它,就是这样。
如果要覆盖默认权限0,我需要显式指定每个变量的权限。