gpt4 book ai didi

c - 如何在内核模块(B)中调用内核模块(A)中的函数和变量,然后向用户空间发送通知?

转载 作者:太空狗 更新时间:2023-10-29 15:07:32 25 4
gpt4 key购买 nike

我正在开发一个应用程序(用户空间),它通过网络发送值更改通知。

我想开发一个内核模块 (A),以便在其他内核模块 (B) 的参数值发生变化时通知我的应用程序(用户空间)。

  1. 如何从内核模块 (A) 向我的用户空间应用程序发送信号?
  2. 如何将数据从内核模块 (A) 发送到我的用户空间应用程序?
  3. 如何在内核模块(B)中调用内核模块(A)的函数和变量?

最佳答案

从模块A访问模块B

在模块 B 中定义一个 header ,就像一个普通的 C header ,其中包含 A 想要使用的变量/函数,当然 #include 它在 A 中。

在B的其中一个源文件中,写入:

EXPORT_SYMBOL(your_symbol);

对于每个变量/函数。

在模块 A 的 Makefile 中,确保在 KBUILD_EXTRA_SYMBOLS 中添加到模块 B 的 Module.symvers 的路径,以消除依赖性警告并能够在内核已被加载时加载模块配置有 CONFIG_MODVERSIONS

向用户态进程发送信号

老实说,这个我不太了解。我个人使用 Linux 的实时扩展 (RTAI) 为我的工作编写代码,并且我拥有我认为在普通 Linux 中不存在的功能。这些设施是共享内存(在内核和用户之间)和共享信号量(同样在内核和用户之间)等。如果你能在 Linux 中找到这样的东西,那么你就可以使用它。

如果这些不可用(我相信它们不可用),您总是可以简单地编写一个/sys 或/proc 文件,输出一个简单的 0/1 来显示用户空间应用程序是否需要发出信号。然后用户空间应用程序可以轮询这个文件。

关于c - 如何在内核模块(B)中调用内核模块(A)中的函数和变量,然后向用户空间发送通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10041425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com