ご存知のように、netlink はユーザー/カーネル空間の通信メカニズムです。
カーネル モジュールから別のカーネル モジュールに通信したい。別のカーネルモジュールには、すでに netlink インターフェースがあります。
ユーザー空間で行うように、カーネルモジュールからネットリンクに接続することは可能ですか?
ご存知のように、netlink はユーザー/カーネル空間の通信メカニズムです。
カーネル モジュールから別のカーネル モジュールに通信したい。別のカーネルモジュールには、すでに netlink インターフェースがあります。
ユーザー空間で行うように、カーネルモジュールからネットリンクに接続することは可能ですか?
簡単な答え: いいえ。
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);
}