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

时间:2018-10-26 01:34:31

标签: kernel freebsd kernel-module

我的嵌入式设备中有多个内核模块,它们执行诸如处理LCD,触摸屏,串行端口等操作。

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

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

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

有没有一种简单的方法来

  1. 从一个模块调用功能到另一个模块?
  2. 在另一个模块中读取全局变量?
  3. 从一个模块向另一个模块进行ioctl调用?

我的偏好是#3。

1 个答案:

答案 0 :(得分:0)

部分答案:

要在另一个模块中调用函数,

  1. 将MODULE_DEPEND宏放在本地模块的顶部,以便a)确保首先加载了另一个模块,以及b)您可以针对其功能进行链接。不确定b。例如:

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

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

  3. 只需调用远程函数。