EXPORT_SYMBOL()的作用
1.作用
EXPORT_SYMBOL标签内定义的函数或者符号对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用,即使用EXPORT_SYMBOL可以将一个函数以符号的方式导出给其他模块使用。
导出的符号可以被其他模块使用,不过使用之前一定要声明一下。EXPORT_SYMBOL_GPL()只适用于包含GPL许可权的模块。
2、使用方法
第一、在模块函数定义之后使用EXPORT_SYMBOL(函数名)
第二、在掉用该函数的模块中使用extern对之声明
第三、首先加载定义该函数的模块,再加载调用该函数的模块
1.作用
EXPORT_SYMBOL标签内定义的函数或者符号对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用,即使用EXPORT_SYMBOL可以将一个函数以符号的方式导出给其他模块使用。
导出的符号可以被其他模块使用,不过使用之前一定要声明一下。EXPORT_SYMBOL_GPL()只适用于包含GPL许可权的模块。
2、使用方法
第一、在模块函数定义之后使用EXPORT_SYMBOL(函数名)
第二、在掉用该函数的模块中使用extern对之声明
第三、首先加载定义该函数的模块,再加载调用该函数的模块
01.//hello.c文件,定义2个函数,用于导出
02.#include
03.#include
04.MODULE_LICENSE("Dual BSD/GPL");
05.int add_integar(int a,int b)
06.{
07. return a + b;
08.}
09.int sub_integar(int a,int b)
10.{
11. return a - b;
12.}
13.EXPORT_SYMBOL(add_integar);
14.EXPORT_SYMBOL(sub_integar);
15.//test.c 用于调用hello模块导出的函数
16.#include
17.#include
18.MODULE_LICENSE("Dual BSD/GPL");
19.extern int add_integar(int ,int); //声明要调用的函数
20.extern int sub_integar(int ,int); //声明要调用的函数
21.int result(void)
22.{
23. int a,b;
02.#include
03.#include
04.MODULE_LICENSE("Dual BSD/GPL");
05.int add_integar(int a,int b)
06.{
07. return a + b;
08.}
09.int sub_integar(int a,int b)
10.{
11. return a - b;
12.}
13.EXPORT_SYMBOL(add_integar);
14.EXPORT_SYMBOL(sub_integar);
15.//test.c 用于调用hello模块导出的函数
16.#include
17.#include
18.MODULE_LICENSE("Dual BSD/GPL");
19.extern int add_integar(int ,int); //声明要调用的函数
20.extern int sub_integar(int ,int); //声明要调用的函数
21.int result(void)
22.{
23. int a,b;
23. int a,b;
24. a = add_integar(1,1);
25. b = sub_integar(1,1);
26.
27. printk("%d\n",a);
28. printk("%d\n",b);
29.
30. return 0;
31.}
24. a = add_integar(1,1);
25. b = sub_integar(1,1);
26.
27. printk("%d\n",a);
28. printk("%d\n",b);
29.
30. return 0;
31.}