linux内核导出符号
2012-10-29 11:34
363 查看
Linux 2.6系统的"/proc/kallsyms"文件对应着内核符号表,它记录了符号以及符号所在的内存地址。
模块可以使用如下宏导出符号到内核符号表:
EXPORT_SYMBOL(符号名);
EXPORT_SYMBOL_GPL(符号名); //只适用于包含GPL许可权的模块;
符号必须在模块文件的全局部分导出,不能在函数中导出,这是因为上述这两个宏将被扩展成一个特殊用途的声明,而该变量必须是全局的。
使用方法:
1.在模块函数或符号定义后使用EXPORT_SYMOL_GPL(符号名);
2.在调用的模块中使用extern声明与之对应;
3.必须保证被调用的符号所在模块已被加载;
举例说明下,比如我们要使用driver/char/pwm.c中的变量pwm_dev及函数pwm_set_duty_cycle(),如下所示:
模块可以使用如下宏导出符号到内核符号表:
EXPORT_SYMBOL(符号名);
EXPORT_SYMBOL_GPL(符号名); //只适用于包含GPL许可权的模块;
符号必须在模块文件的全局部分导出,不能在函数中导出,这是因为上述这两个宏将被扩展成一个特殊用途的声明,而该变量必须是全局的。
使用方法:
1.在模块函数或符号定义后使用EXPORT_SYMOL_GPL(符号名);
2.在调用的模块中使用extern声明与之对应;
3.必须保证被调用的符号所在模块已被加载;
举例说明下,比如我们要使用driver/char/pwm.c中的变量pwm_dev及函数pwm_set_duty_cycle(),如下所示:
struct pwm_dev pwm_dev = { .id = 11, .mux_offset = GPT11_MUX_OFFSET, }; EXPORT_SYMBOL_GPL(pwm_dev);
int pwm_set_duty_cycle(struct pwm_dev *pd, u32 duty_cycle) { u32 new_tmar; if (duty_cycle > 100) return -EINVAL; if (duty_cycle == 0) { pwm_off(pd); return 0; } new_tmar = (duty_cycle * pd->num_settings) / 100; if (new_tmar < 1) new_tmar = 1; else if (new_tmar > pd->num_settings) new_tmar = pd->num_settings; pd->tmar = pd->tldr + new_tmar; pwm_on(pd); pd->current_val = duty_cycle; return 0; } EXPORT_SYMBOL_GPL(pwm_set_duty_cycle);如果我们在板级文件board-am3517evm.c中调用该函数,需要先声明再调用:
extern struct pwm_dev pwm_dev; ....... ...... ...... pwm_set_duty_cycle(&pwm_dev,0);
相关文章推荐
- Linux内核导出符号宏定义EXPORT_SYMBOL的源码分析
- Linux内核导出符号宏定义EXPORT_SYMBOL源代码分析
- (转载) C/C++编译和链接过程详解 (重定向表,导出符号表,未解决符号表)
- 获取Linux内核未导出符号的几种方式
- 内核符号导出
- 获取Linux内核未导出符号的几种方式
- Linux内核模块符号导出后无法调用问题
- linux内核符号表
- linux模块导出符号 EXPORT_SYMBOL_GPL EXPORT_SYMBOL .
- C/C++编译和链接过程详解 (重定向表,导出符号表,未解决符号表)
- linux内核导出符号
- GCC编译之如何控制共享文件导出符号
- 项目中 poi 导出 出现html特殊符号的实体 (已解决)
- linux模块导出符号 EXPORT_SYMBOL_GPL EXPORT_SYMBOL
- C/C++编译和链接过程详解 (重定向表,导出符号表,未解决符号表)
- linux模块导出符号 EXPORT_SYMBOL_GPL EXPORT_SYMBOL
- 关于oracle导出导入以及关于oracle的$符号==SP2-0734: unknown command beginning "exp username..." - rest of line ignored.
- 关于linux-2.6.26内核以后版本中出现的符号导出无法被调用的问题
- 在程序中使用libcurl的的静态链接库产生的未导出符号的错误(zt)
- 驱动模块的介绍 参数 导出符号