Linuxカーネルのエクスポート用ドライバ開発の記法
EXPORT_SYMBOLはLinuxカーネル内のマクロであり、シンボル(関数、変数など)を他のモジュールで使用できるようにエクスポートします。
Linuxカーネル内では、そのモジュール内でのみ使用するシンボルがあり、他のモジュールからはアクセスできません。しかし、場合によっては、それらのシンボルを他のモジュールで使用できるようにエクスポートしたいことがあります。その場合は、EXPORT_SYMBOLマクロを使用して実現できます。
EXPORT_SYMBOLの使い方ごく簡単。エクスポートする必要があるシンボルの定義の前にEXPORT_SYMBOLマクロを追加すればよい。例えば:
EXPORT_SYMBOL(my_function);
EXPORT_SYMBOL(my_variable);
そうすると、他のモジュールは extern キーワード経由でそれらの外部シンボルにアクセスできます。
EXPORT_SYMBOLは、グローバルシンボルのみをエクスポートでき、ローカルシンボルはエクスポートできないことに注意してください。さらに、EXPORT_SYMBOLを使用してエクスポートされたシンボルはグローバルに見えるので、名前の衝突やその他の問題を引き起こさないように慎重に使用してください。
GPL ライセンス下においてのみ使用できる EXPORT_SYMBOL と同様の機能を持つ、関連するマクロ EXPORT_SYMBOL_GPL もあります。これは、一部のシンボルが著作権やライセンスの問題に関わる可能性があり、GPL ライセンスを遵守するモジュールのみがこれらのシンボルを使用できるためです。
EXPORT_SYMBOLとは、Linuxカーネルでシンボルをエクスポートするためのマクロで、他のモジュールが使用できるようにシンボルをエクスポートします。使い方はシンプルで、エクスポートするシンボルの定義の前にEXPORT_SYMBOLマクロを追加するだけです。