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

时间:2012-06-13 12:49:16

标签: linux linux-kernel kernel-module netlink

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

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

是否可以从内核模块到netlink建立连接,就像我们在用户空间中进行连接一样?

1 个答案:

答案 0 :(得分:3)

简短回答:不。

如果要在两个内核模块之间进行通信,则应使用由其他内核模块导出的符号(全局变量或函数)。

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

导出符号的示例:

module1.c:

  int foo(int a)
  {
      /* do some stuff here */
  }
  EXPORT_SYMBOL(foo);

module2.c

  extern int foo(int);
  int bla(int b)
  {
      /* call foo(a) */
      int ret = foo(b);
  }