5

ご存知のように、netlink はユーザー/カーネル空間の通信メカニズムです。

カーネル モジュールから別のカーネル モジュールに通信したい。別のカーネルモジュールには、すでに netlink インターフェースがあります。

ユーザー空間で行うように、カーネルモジュールからネットリンクに接続することは可能ですか?

4

1 に答える 1

5

簡単な答え: いいえ。

2 つのカーネル モジュール間で通信する場合は、他のカーネル モジュールによってエクスポートされるシンボル (グローバル変数または関数) を使用する必要があります。

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);
  }
于 2012-06-13T13:37:49.097 に答える