linux2.6的“/prob/kallsyms”文件对应着内核符号表,记录了符号以及符号所在的内存地址。

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

[c-sharp] view plaincopy
  1. EXPORT_SYMBOL(符号名);
  2. EXPORT_SYMBOL_GPL(符号名)

导出的符号可以被其他模块使用,不过使用之前一定要声明一下。EXPORT_SYMBOL_GPL()只适用于包含GPL许可权的模块。

代码演示:

[c-sharp] view plaincopy
  1. //hello.c文件,定义2个函数,用于导出
  2. #include <linux/init.h>
  3. #include <linux/module.h>
  4. MODULE_LICENSE("Dual BSD/GPL");
  5. int add_integar(int a,int b)
  6. {
  7. return a + b;
  8. }
  9. 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 <linux/init.h>
  17. #include <linux/module.h>
  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;
  24. a = add_integar(1,1);
  25. b = sub_integar(1,1);
  26. printk("%d/n",a);
  27. printk("%d/n",b);
  28. return 0;
  29. }

make后,先加在hello模块,再加载test模块。

然后cat /proc/kallsyms | grep integer

显示:

[c-sharp] view plaincopy
  1. [root@localhost test]# cat /proc/kallsyms |grep integar
  2. e053d000 u add_integar  [test]
  3. e053d004 u sub_integar  [test]
  4. e053d02c r __ksymtab_sub_integar        [hello]
  5. e053d03c r __kstrtab_sub_integar        [hello]
  6. e053d034 r __ksymtab_add_integar        [hello]
  7. e053d048 r __kstrtab_add_integar        [hello]
  8. e053d000 T add_integar  [hello]
  9. e053d004 T sub_integar  [hello]

EXPORT_SYMBOL相关推荐

  1. EXPORT_SYMBOL的作用是什么

    http://www.cnblogs.com/riskyer/p/3221805.html EXPORT_SYMBOL只出现在2.6内核中,在2.4内核默认的非static 函数和变量都会自动 导入到 ...

  2. Linux驱动编程中EXPORT_SYMBOL()介绍

    一.查看内核驱动代码你会发现很多的函数带有EXPORT_SYMBOL()宏定义. 二.那么EXPORT_SYMBOL的作用是什么?            EXPORT_SYMBOL标签内定义的函数或者 ...

  3. linux export_symbol 变量,linux EXPORT_SYMBOL

    From http://blog.csdn.net/brucexu1978/article/details/7081748 2011-12-18 16:05 1480人阅读 评论(0) System. ...

  4. export_symbol的使用

    在内核模块中使用tasklist_lock来操作保护内核进程链表,由于tasklist_lock如果要在模块中使用就必须把它填充到内核符号表里面,就要使用export_symbol,tasklist_ ...

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

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

  6. driver: linux2.6 内核模块导出函数实例(EXPORT_SYMBOL)

    内核版本:2.6.38-11-generic 内核自己都大量利用内核符号表导出函数,那么应该导出呢,ldd3上面说只需要EXPORT_SYMBOL一类的宏导出即可,结果试了很久都不行,最后查看文档,算 ...

  7. 宏EXPORT_SYMBOL在内核中的作用

    Module运行在kernel space,不能直接调用应用程序库,只能调用内核函数. EXPORT_SYMBOL的作用是把内核函数的符号导出,也就是将函数的入口地址导出. Module在运行的时候会 ...

  8. 谈EXPORT_SYMBOL使用

    [转载]谈EXPORT_SYMBOL使用 转自:http://www.cnblogs.com/GT_Andy/archive/2011/06/23/2088127.html EXPORT_SYMBOL ...

  9. 关于EXPORT_SYMBOL

    linux2.6的"/prob/kallsyms"文件对应着内核符号表,记录了符号以及符号所在的内存地址. 模块可以使用如下宏导出符号到内核符号表: [c-sharp] view ...

  10. EXPORT_SYMBOL使用

    EXPORT_SYMBOL只出现在2.6内核中,在2.4内核默认的非static 函数和变量都会自动导入到kernel 空间的, 都不用EXPORT_SYMBOL() 做标记的. 2.6就必须用EXP ...

最新文章

  1. 奇虎360将于18日在美摘牌 进程早于外界预期
  2. windows 远程登录用户管理
  3. python utf-8编码转换中文_python实现unicode转中文及转换默认编码的方法
  4. ubuntu php设置,关于ubuntu php环境设置详解-PHP问题
  5. 依存句法分析 oracle,spaCy 第三篇:依存分析
  6. 解决:PHP Deprecated: Comments starting with '#' are deprecated in ……
  7. android apk自动安装包下载,Android 实现apk文件下载并自动安装
  8. 嵌入式linux gps,嵌入式Linux平台的GPS数据采集
  9. 详解百度地图API之驾车导航
  10. 北京航空航天大学经管学院《量化交易与大数据金融》课程实验 :自选至少5支基金,和一个大盘指数,比较这5支基金的信息比率
  11. CAD批量打图精灵自动识别纸张大小
  12. 计算机基础和photoshop的应用,一级计算机基础与Photoshop应用真题
  13. Fabric - chaincode开发模式
  14. s5p6818PWM驱动蜂鸣器实验
  15. iperf3 网络测速工具 —— 筑梦之路
  16. 阿里云服务器优惠活动中的突发性/共享型/计算型/通用型实例怎么选
  17. C# 依赖注入:AddTransient、AddScoped、AddSingleton的理解
  18. Effective C++ 条款1、2、3、4
  19. 【TA工具】快速结合/叠加多张法线贴图
  20. 欧洲的计算机博士申请,申请经典案例:欧洲计算机科学专业博士全奖

热门文章

  1. spring+websocket综合(springMVC+spring+MyBatis这是SSM框架和websocket集成技术)
  2. 推荐一款移动端的web UI控件 -- mobiscroll
  3. Android ImageView的scaleType(图片比例类型)属性与adjustViewBounds(调整视图边界)属性
  4. 正道的光用计算机,正道的光作文500字
  5. 手写springboot_Spring Boot 入门教程 | 图文讲解
  6. 关于C10K问题详解-突破单机性能是高性能网络编程
  7. linux c程序中内核态与用户态内存存储问题
  8. 如何有效解决C与C++的相互调用问题
  9. mysql mtop_mysqlmtop2.2运行出错
  10. red hat linux 远程,Red Hat Linux 远程桌面 – 如何设置