1、EXPORT_SYMBOL的作用是什么?

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

这里要和System.map做一下对比:

System.map 中的是连接时的函数地址。连接完成以后,在2.6内核运行过程中,是不知道哪个符号在哪个地址的。

EXPORT_SYMBOL的符号,是把这些符号和对应的地址保存起来,在内核运行的过程中,可以找到这些符号对应的地址。而模块在加载过程中,其本质就是能动态连接到内核,

如果在模块中引用了内核或其它模块的符号,就要EXPORT_SYMBOL这些符号,这样才能找到对应的地址连接。

2、使用方法

第一、在模块函数定义之后使用EXPORT_SYMBOL(函数名);

第二、在调用该函数的模块中使用extern对之声明;

第三、首先加载定义该函数的模块,再加载调用该函数的模块;

3、区别

EXPORT_SYMBOL(name);

EXPORT_SYMBOL_GPL(name);

这两个宏均用于将给定的符号导出到模块外, _GPL版本的宏定义只能使符号对GPL许可的模块可用。 符号必须在模块文件的全局部分导出,不能在函数中导出,

这是因为上述这两个宏将被扩展成一个特殊用途的声明,而该变量必须是全局的。这个变量存储于模块的一个特殊的可执行部分(一个"ELF段" ),在装载时,内核通过这个段来寻找模块导出的变量

1、EXPORT_SYMBOL的作用是什么?

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

这里要和System.map做一下对比:

System.map 中的是连接时的函数地址。连接完成以后,在2.6内核运行过程中,是不知道哪个符号在哪个地址的。

EXPORT_SYMBOL的符号,是把这些符号和对应的地址保存起来,在内核运行的过程中,可以找到这些符号对应的地址。而模块在加载过程中,其本质就是能动态连接到内核,

如果在模块中引用了内核或其它模块的符号,就要EXPORT_SYMBOL这些符号,这样才能找到对应的地址连接。

2、使用方法

第一、在模块函数定义之后使用EXPORT_SYMBOL(函数名);

第二、在调用该函数的模块中使用extern对之声明;

第三、首先加载定义该函数的模块,再加载调用该函数的模块;

3、区别

EXPORT_SYMBOL(name);

EXPORT_SYMBOL_GPL(name);

这两个宏均用于将给定的符号导出到模块外, _GPL版本的宏定义只能使符号对GPL许可的模块可用。 符号必须在模块文件的全局部分导出,不能在函数中导出,

这是因为上述这两个宏将被扩展成一个特殊用途的声明,而该变量必须是全局的。这个变量存储于模块的一个特殊的可执行部分(一个"ELF段" ),在装载时,内核通过这个段来寻找模块导出的变量

最新文章

  1. Group By Count不能显示0的问题
  2. Android项目框架升级尝鲜OkHttp
  3. Linux下设置网卡静态ip
  4. maven的简单安装与配置
  5. 两年内从零到每月十亿 PV 的发展来谈 Pinterest 的架构设计(转)
  6. 什么是gulp
  7. SkipList跳表基本原理
  8. ⑨bootstrap组件 按钮式下拉菜单 输入框 使用基础案例
  9. 【转】Nginx反向代理和负载均衡
  10. 读书笔记之《Java编程思想》
  11. WPS怎么让前几页的页眉或者页脚与后面的不同
  12. 安装最新nodejs
  13. 性能调优9:根据WaitType诊断性能
  14. linux之cp命令(转载)
  15. jquery 笔记 点击周围区域子类隐藏,点击子类内部的信息 不隐藏
  16. postmain 通过函数动态设置参数
  17. C#中三层架构UI、BLL、DAL、Model实际操作
  18. telnet 命令使用方法详解,telnet命令怎么用
  19. 万能的ctrl+shift+F(Element 'beans' cannot have character [children], because the type's content type is element-only.错误)
  20. python基础学习1-描述符

热门文章

  1. windows server backup 无法使用或wbadmin.msc致命错误解决方法
  2. Vulhub 漏洞学习之:ECShop
  3. wpf 样式style封装以及点击按钮打开新窗口
  4. SAP 登录文件路径
  5. python笔记--在文件进行输出
  6. Linux 磁盘扩容
  7. 【python操作Excel的常见方法汇总】 xlrd pandas xlwings
  8. [数据库-Mongo总结]-mysql使用总结和pymysql交互
  9. redis 5.0.5集群部署与服务器宕机故障模拟
  10. rancher 修改域名