Linux 如何更改从LKM添加到内核的变量?

Linux 如何更改从LKM添加到内核的变量?,linux,linux-kernel,Linux,Linux Kernel,我从一个非常基本的“hello world”LKM开始学习,另外,我已经在内核中添加了功能,并成功地重新编译了它,它可以正常工作。 我现在喜欢做的是在编译后的内核代码中添加一个变量,然后在加载和卸载模块时,从我的LKM可以更改该变量。这样我就可以启动和停止内核功能,而无需重新编译。 有什么建议吗 谢谢两种解决方案: 1) 通过proc/sysfs(首选方式)向用户空间公开变量 2) 使用字符设备驱动程序发送ioctl。为什么不将其添加到proc和/或sysfs中?您的意思是什么?我该怎么做?谢谢

我从一个非常基本的“hello world”LKM开始学习,另外,我已经在内核中添加了功能,并成功地重新编译了它,它可以正常工作。 我现在喜欢做的是在编译后的内核代码中添加一个变量,然后在加载和卸载模块时,从我的LKM可以更改该变量。这样我就可以启动和停止内核功能,而无需重新编译。 有什么建议吗

谢谢

两种解决方案:
1) 通过proc/sysfs(首选方式)向用户空间公开变量

2) 使用字符设备驱动程序发送ioctl。

为什么不将其添加到proc和/或sysfs中?您的意思是什么?我该怎么做?谢谢你的帮助。我注意到在我添加代码的文件中,有很多#ifdef#endif部分。因此,我认为最简单的方法是设置一个变量,比如我的_MODULE_LOADED,但我不知道如何更改我的_MODULE_LOADED(从LKM
加载)#ifdef
仅在编译时起作用。不能在运行时更改它们的值。