是否可以通过netlink在两个linux内核模块之间进行通信?

Ale*_*lov 5 linux kernel-module linux-kernel netlink

众所周知,netlink 是用户/内核空间通信机制。

我想从我的内核模块通信到另一个。另一个内核模块已经有了 netlink 接口。

是否可以像我们在用户空间那样从内核模块连接到 netlink?

dwa*_*ter 5

简短的回答:没有。

如果您想在两个内核模块之间进行通信,您应该使用由另一个内核模块导出的符号(全局变量或函数)。

netlink套接字用于内核和用户空间之间的通信。AFAIR 无法使用 netlink(至少它不是首选方式)在内核内进行通信。

导出符号的示例:

module1.c:

  int foo(int a)
  {
      /* do some stuff here */
  }
  EXPORT_SYMBOL(foo);
Run Code Online (Sandbox Code Playgroud)

module2.c

  extern int foo(int);
  int bla(int b)
  {
      /* call foo(a) */
      int ret = foo(b);
  }
Run Code Online (Sandbox Code Playgroud)