EXPORT_SYMBOL()是一個(gè)宏,用于將一個(gè)符號(hào)(函數(shù)、變量等)導(dǎo)出為模塊接口,以供其他模塊使用。
在Linux驅(qū)動(dòng)編程中,使用EXPORT_SYMBOL()宏的步驟如下:
例如,假設(shè)我們有一個(gè)驅(qū)動(dòng)源文件driver.c,其中定義了一個(gè)函數(shù)my_function()需要導(dǎo)出:
#include <linux/module.h>
void my_function(void)
{
// do something
}
EXPORT_SYMBOL(my_function);
以上代碼中,我們首先在驅(qū)動(dòng)源文件中定義了一個(gè)函數(shù)my_function(),然后使用EXPORT_SYMBOL宏將該函數(shù)導(dǎo)出。
導(dǎo)出后的函數(shù)my_function()可以被其他模塊使用,其他模塊只需包含該驅(qū)動(dòng)的頭文件,并使用extern關(guān)鍵字聲明該函數(shù)即可:
#include <linux/module.h>
extern void my_function(void);
static int __init my_module_init(void)
{
// 使用my_function()函數(shù)
my_function();
return 0;
}
static void __exit my_module_exit(void)
{
// 模塊退出時(shí)的處理
}
module_init(my_module_init);
module_exit(my_module_exit);
以上代碼中,我們在其他模塊中使用extern關(guān)鍵字聲明了my_function()函數(shù),并在初始化函數(shù)中調(diào)用了該函數(shù)。
需要注意的是,EXPORT_SYMBOL()宏用于將符號(hào)導(dǎo)出到內(nèi)核空間,不可將其用于用戶空間的驅(qū)動(dòng)編程。