linux symbol文件,LINUX EXPORT_SYMBOL_GPL及EXPORT_SYMBOL导出函数

EXPORT_SYMBOL(),这个宏也是将函数导出让所有模块都可以使用,而EXPORT_SYMBOL_GPL()这个宏主要是给有GPL认证的模块使用。

2)、EXPORT_SYMBOL标签内定义的函数对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用。

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

一)主要作之一: 内核"导出"的符号表,这个表在insmod 时候会用到.

1./proc/kallsyms

cat /proc/kallsyms会打印出内核当前的符号表,例如:

...

d8834a24 t snd_free_sgbuf_pages [snd_page_alloc]

d8834ab5 t snd_malloc_sgbuf_pages [snd_page_alloc]

c014f906 U kmem_cache_alloc [snd_page_alloc]

c0106dcd U dma_alloc_coherent [snd_page_alloc]

...

其中第一列是该符号在内核地址空间中的地址;第二列是符号属性,小写表示

局部符号,大写表示全局符号,具体含义参考man nm; 第三列表示符号字符串.

这里只能显示EXPORT_SYMBOL,EXPROT_SYMBOL_GPL处理过的符号。

2.System.map内核符号文件

通过more /boot/System.map 可以查看内核符号列表。

可以显示编译好内核后所有在内核中的符号,模块中的要另行查看。

3.通过nm vmlinux也可以查看内核符号列表

可以显示编译好内核后所有在内核中的符号,模块中的要另行查看。

4.通过nm module_name可以查看模块的符号列表

但是得到是相对地址,只有加载后才会分配绝对地址。比如:e1000模块,如果e1000中的符号经过EXPORT_SYMBOL处理,

等加载后,我们可以通过more /boot/System.map和nm vmlinux命令查看到,但是没有EXPORT_SYMBOL的,不能查看。

代码如:

int __gpio_cansleep(unsigned gpio)

{

struct gpio_chip *chip;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值