【问题标题】:Sharing buffer between Linux kernel modules causing "Unable to handle kernel paging request at virtual address XXXXX"在 Linux 内核模块之间共享缓冲区导致“无法在虚拟地址 XXXXX 处处理内核分页请求”
【发布时间】: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


【解决方案1】:

我的问题通过extern char arr[100]解决了;在第二个模块中。

【讨论】:

    猜你喜欢
    • 2016-11-06
    • 2014-08-14
    • 2019-02-17
    • 1970-01-01
    • 2011-04-20
    • 2015-12-31
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多