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

C 如何从内核模块(B)中的内核模块(A)调用函数和变量,然后向用户空间发送通知?,c,linux-kernel,C,Linux Kernel,我正在开发一个应用程序(用户空间),通过网络发送价值变化通知 我想开发一个内核模块(a),以便在其他内核模块(B)中的参数值发生变化时通知我的应用程序(用户空间) 如何从内核模块(A)向我的用户空间应用程序发送信号 如何将数据从内核模块(A)发送到我的用户空间应用程序 如何在内核模块(B)中从内核模块(A)调用函数和变量 从模块A访问模块B 在模块B中定义一个标题,就像普通的C标题一样,它包括a想要使用的变量/函数,当然也包括在a中 在B的一个源文件中,写入: EXPORT_SYMBOL(you

我正在开发一个应用程序(用户空间),通过网络发送价值变化通知

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

  • 如何从内核模块(A)向我的用户空间应用程序发送信号
  • 如何将数据从内核模块(A)发送到我的用户空间应用程序
  • 如何在内核模块(B)中从内核模块(A)调用函数和变量
  • 从模块A访问模块B 在模块B中定义一个标题,就像普通的C标题一样,它包括a想要使用的变量/函数,当然也包括在a中

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

    EXPORT_SYMBOL(your_symbol);
    
    对于每个变量/函数

    在模块A的Makefile中,确保在
    KBUILD\u EXTRA\u SYMBOLS
    中添加到模块B的module.symvers的路径,以消除依赖项警告,并在内核配置了
    CONFIG\u MODVERSIONS

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


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

    netlink是为与用户空间通信而创建的,请对此略作考虑。可能存在重复的