「EXPORT_SYMBOL()」関数のLinuxカーネルでの使用方法を教えてください。
Linuxカーネルにおいて、EXPORT_SYMBOL関数は、あるシンボル(関数、変数、静的関数)を、モジュールが利用可能なグローバルシンボルとしてエクスポートするために使用されます。エクスポートされたシンボルは、その他のモジュールやカーネルコードにおいて参照可能です。
EXPORT_SYMBOL の使用方法を以下に示します。
- エクスポートしたいシンボル(関数の、変数の、静的関数の)があるソースファイルを見つける。
- 必要のあるエクスポート記号の定義の前に、EXPORT_SYMBOL マクロ呼び出しを追加します (例:
EXPORT_SYMBOL(my_function);
- モジュール化されたモジュールとして(個々のモジュールとして)コンパイルする、あるいはカーネルにコンパイルするかのいずれかの方法で、そのモジュールがカーネルでコンパイルされるようにする。
- エクスポートされた記号は、他のモジュールやカーネルコードから参照できるようになりました。
なお、EXPORT_SYMBOL関数はグローバルシンボルのみをエクスポートでき、ローカルシンボル(現在のソースファイル内でのみ見えるシンボル)をエクスポートすることはできません。また、エクスポートしたいシンボルがスタティック関数である場合には、EXPORT_SYMBOL_GPLマクロを使ってエクスポートすることができますが、その場合GPLライセンスのモジュールからのみそのシンボルが利用できるようになります。
他にも関与する関数として、EXPORT_SYMBOL、EXPORT_SYMBOL_GPL_FUTURE、EXPORT_SYMBOL_NS などがあり、EXPORT_SYMBOL と同様に使用できますが、特定の制約や特性があります。
モジュールから使用できるグローバルシンボルとしてシンボルをエクスポートする重要な手段の一種で、カーネルモジュールの開発やカーネルの拡張時に役立ちます。