EXPORT_SYMBOL是什么?

参考博客

1、EXPORT_SYMBOL是什么?

EXPORT_SYMBOL标签内定义的函数或者符号对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用(使用前使用extern声明一下就行),即使用EXPORT_SYMBOL可以将一个函数以符号的方式导出给其他模块使用。

注意:

EXPORT_SYMBOL只出现在2.6内核中,在2.4内核默认的非static 函数和变量都会自动导入到kernel 空间的, 都不用EXPORT_SYMBOL() 做标记的。
2.6就必须用EXPORT_SYMBOL() 来导出来(因为2.6默认不到处所有的符号)。 

2、使用流程

在模块函数定义之后使用“EXPORT_SYMBOL(函数名)”来声明。

在调用该函数的另外一个模块中使用extern对之声明。

先加载定义该函数的模块,然后再加载调用该函数的模块,请注意这个先后顺序。

3、示例

static int function_one(void)
{

    printk("EXPORT_SYMBOL In Func: %s...
",__func__);
    return 0;

}
EXPORT_SYMBOL(function_one);
原文地址:https://www.cnblogs.com/xz-954042850-qq/p/12792118.html