如何在 2 个 FreeBSD 内核模块之间共享数据?



我的嵌入式设备中有多个内核模块,可以处理LCD,触摸屏,串行端口等。

一个内核模块能够读取PCB版本。

我希望我的LCD模块也能够读取PCB版本。 最简单的方法是先加载PCB版本模块,然后让LCD模块询问版本。

这两个模块都是可加载的.ko的,都是我写的。

有没有一种简单的方法可以:

  1. 从一个模块到另一个模块进行函数调用?
  2. 读取另一个模块中的全局变量?
  3. 从一个模块到另一个模块进行 IOCTL 调用?

我的偏好是#3。

部分答案:

调用另一个模块中的函数:

  1. 将MODULE_DEPEND宏放在本地模块的顶部,以 a( 确保首先加载另一个模块,以及 b( 您可以链接到其函数。 不确定 b。 例如:

    MODULE_DEPEND(lcd_mod, timer_mod, 1, 1, 1(;

  2. 在本地模块中放置远程函数的声明。

  3. 只需调用远程函数。

最新更新