购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.6
导出符号

Linux的“/proc/kallsyms”文件对应着内核符号表,它记录了符号以及符号所在的内存地址。

模块可以使用如下宏导出符号到内核符号表中:

EXPORT_SYMBOL(符号名);
EXPORT_SYMBOL_GPL(符号名);

导出的符号可以被其他模块使用,只需使用前声明一下即可。EXPORT_SYMBOL_GPL()只适用于包含GPL许可权的模块。代码清单4.5给出了一个导出整数加、减运算函数符号的内核模块的例子。

代码清单4.5 内核模块中的符号导出

 1#include <linux/init.h>
 2#include <linux/module.h>
 3
 4int add_integar(int a, int b)
 5{
 6  return a + b;
 7}
 8EXPORT_SYMBOL_GPL(add_integar);
 9
10int sub_integar(int a, int b)
11{
12  return a - b;
13}
14EXPORT_SYMBOL_GPL(sub_integar);
15
16MODULE_LICENSE("GPL v2");

从“/proc/kallsyms”文件中找出add_integar、sub_integar的相关信息: zrj+WXtHXVs35BoyOlVppU3jLgYrYoA2A0KasnjGK9y76/8jd5jsZVegiSv16cwT

# grep integar /proc/kallsyms
e679402c r __ksymtab_sub_integar    [export_symb]
e679403c r __kstrtab_sub_integar    [export_symb]
e6794038 r __kcrctab_sub_integar    [export_symb]
e6794024 r __ksymtab_add_integar    [export_symb]
e6794048 r __kstrtab_add_integar    [export_symb]
e6794034 r __kcrctab_add_integar    [export_symb]
e6793000 t add_integar    [export_symb]
e6793010 t sub_integar    [export_symb]
点击中间区域
呼出菜单
上一章
目录
下一章
×