2012年10月17日水曜日

あるカーネルモジュールで定義したグローバル変数を別のモジュールから参照する

あるカーネルモジュールで定義したグローバル変数を別のモジュールから参照する。

まず、最初のカーネルモジュール A で外部に見せたい変数を EXPORT_SYMBOL() で囲む。
次に、別のカーネルモジュール B で、その変数を参照するわけだが、これで通常のコンパイルをすると、その変数は undefined だと言われる。

これを解決するためには、カーネルモジュール B をコンパイルする際に、
make -C ... M=... KBUILD_EXTRA_SYMBOLS=<path>/Module.symvers modules
のように、KBUILD_EXTRA_SYMBOLS にモジュール A の Modules.symvers のパスを指定するとうまくいく。

0 件のコメント:

コメントを投稿