【发布时间】:2014-05-01 13:34:21
【问题描述】:
我有一个内核模块,它的声明为char arr[100];,并像这样导出它,
EXPORT_SYMBOL(arr);
在第二个模块中,我尝试将其用作extern char *arr;,并在我尝试使用snprintf(buffer,100,"%s\n",arr); 时读取此模块
这一行给出了类似
的错误Unable to handle kernel paging request at virtual address XXXXX"
应该是什么原因造成的?
【问题讨论】:
-
你确定两个模块都加载了,并且在用arr加载模块后需要访问吗?我认为更好的方法是创建函数,该函数将返回缓冲区的地址。
-
是的,第一个插入的模块带有 arr[100],然后我尝试从第二个模块中读取值。
-
“缓冲区”的大小是多少?
-
@osgx: 我的问题通过使用 extern char arr[100]; 解决了在第二个模块中。感谢您的宝贵时间。
-
能否请您为后代回答您自己的问题?回答您自己的问题并将其接受为“对我有用”是非常有意义的。这将有助于整个社区。请阅读FAQ
标签: linux-kernel linux-device-driver kernel-module