LinuxドライバプログラミングにおけるEXPORT_SYMBOL()の使用方法
EXPORT_SYMBOL()は、シンボル(関数、変数など)を他のモジュールで使用できるようにモジュールのインターフェースとしてエクスポートするためのマクロです。
Linux ドライバープログラミングで、EXPORT_SYMBOL() マクロを使用する手順は次のとおりです。
- エクスポートする記号、例えば関数や変数をドライバソースファイルに定義する。
- 定義したシンボルをエクスポートするには、ドライバソースファイルで EXPORT_SYMBOL() マクロを使用します。
例えば、関数のmy_function()エクスポートされる必要がある、ドライバソースファイルdriver.cが存在するとします。
#include <linux/module.h>
void my_function(void)
{
// do something
}
EXPORT_SYMBOL(my_function);
最初にドライバのソースファイルにmy_function()関数を定義し、EXPORT_SYMBOLマクロを利用して外部に公開します。
エクスポートされた関数my_function()は、他のモジュールからも利用可能です。他のモジュールは、このドライバのヘッダファイルをインクルードし、その関数をexternキーワードで宣言するだけで済みます。
#include <linux/module.h>
extern void my_function(void);
static int __init my_module_init(void)
{
// 使用my_function()函数
my_function();
return 0;
}
static void __exit my_module_exit(void)
{
// 模块退出时的处理
}
module_init(my_module_init);
module_exit(my_module_exit);
上記コードでは、他のモジュールで extern キーワードを使用して my_function() 関数を宣言し、初期化関数内でその関数を呼び出しました。
EXPORT_SYMBOL()マクロはカーネル空間にシンボルをエクスポートするために使用するもので、ユーザー空間のドライバプログラミングでは使用できません。