EXPORT_SYMBOL
linux2.6的“/prob/kallsyms”文件对应着内核符号表,记录了符号以及符号所在的内存地址。
模块可以使用如下宏导出符号到内核符号表:
- EXPORT_SYMBOL(符号名);
- EXPORT_SYMBOL_GPL(符号名)
导出的符号可以被其他模块使用,不过使用之前一定要声明一下。EXPORT_SYMBOL_GPL()只适用于包含GPL许可权的模块。
代码演示:
- //hello.c文件,定义2个函数,用于导出
- #include <linux/init.h>
- #include <linux/module.h>
- MODULE_LICENSE("Dual BSD/GPL");
- int add_integar(int a,int b)
- {
- return a + b;
- }
- int sub_integar(int a,int b)
- {
- return a - b;
- }
- EXPORT_SYMBOL(add_integar);
- EXPORT_SYMBOL(sub_integar);
- //test.c 用于调用hello模块导出的函数
- #include <linux/init.h>
- #include <linux/module.h>
- MODULE_LICENSE("Dual BSD/GPL");
- extern int add_integar(int ,int); //声明要调用的函数
- extern int sub_integar(int ,int); //声明要调用的函数
- int result(void)
- {
- int a,b;
- a = add_integar(1,1);
- b = sub_integar(1,1);
- printk("%d/n",a);
- printk("%d/n",b);
- return 0;
- }
make后,先加在hello模块,再加载test模块。
然后cat /proc/kallsyms | grep integer
显示:
- [root@localhost test]# cat /proc/kallsyms |grep integar
- e053d000 u add_integar [test]
- e053d004 u sub_integar [test]
- e053d02c r __ksymtab_sub_integar [hello]
- e053d03c r __kstrtab_sub_integar [hello]
- e053d034 r __ksymtab_add_integar [hello]
- e053d048 r __kstrtab_add_integar [hello]
- e053d000 T add_integar [hello]
- e053d004 T sub_integar [hello]
EXPORT_SYMBOL相关推荐
- EXPORT_SYMBOL的作用是什么
http://www.cnblogs.com/riskyer/p/3221805.html EXPORT_SYMBOL只出现在2.6内核中,在2.4内核默认的非static 函数和变量都会自动 导入到 ...
- Linux驱动编程中EXPORT_SYMBOL()介绍
一.查看内核驱动代码你会发现很多的函数带有EXPORT_SYMBOL()宏定义. 二.那么EXPORT_SYMBOL的作用是什么? EXPORT_SYMBOL标签内定义的函数或者 ...
- linux export_symbol 变量,linux EXPORT_SYMBOL
From http://blog.csdn.net/brucexu1978/article/details/7081748 2011-12-18 16:05 1480人阅读 评论(0) System. ...
- export_symbol的使用
在内核模块中使用tasklist_lock来操作保护内核进程链表,由于tasklist_lock如果要在模块中使用就必须把它填充到内核符号表里面,就要使用export_symbol,tasklist_ ...
- linux symbol文件,LINUX EXPORT_SYMBOL_GPL及EXPORT_SYMBOL导出函数
EXPORT_SYMBOL(),这个宏也是将函数导出让所有模块都可以使用,而EXPORT_SYMBOL_GPL()这个宏主要是给有GPL认证的模块使用. 2).EXPORT_SYMBOL标签内定义的函 ...
- driver: linux2.6 内核模块导出函数实例(EXPORT_SYMBOL)
内核版本:2.6.38-11-generic 内核自己都大量利用内核符号表导出函数,那么应该导出呢,ldd3上面说只需要EXPORT_SYMBOL一类的宏导出即可,结果试了很久都不行,最后查看文档,算 ...
- 宏EXPORT_SYMBOL在内核中的作用
Module运行在kernel space,不能直接调用应用程序库,只能调用内核函数. EXPORT_SYMBOL的作用是把内核函数的符号导出,也就是将函数的入口地址导出. Module在运行的时候会 ...
- 谈EXPORT_SYMBOL使用
[转载]谈EXPORT_SYMBOL使用 转自:http://www.cnblogs.com/GT_Andy/archive/2011/06/23/2088127.html EXPORT_SYMBOL ...
- 关于EXPORT_SYMBOL
linux2.6的"/prob/kallsyms"文件对应着内核符号表,记录了符号以及符号所在的内存地址. 模块可以使用如下宏导出符号到内核符号表: [c-sharp] view ...
- EXPORT_SYMBOL使用
EXPORT_SYMBOL只出现在2.6内核中,在2.4内核默认的非static 函数和变量都会自动导入到kernel 空间的, 都不用EXPORT_SYMBOL() 做标记的. 2.6就必须用EXP ...
最新文章
- 奇虎360将于18日在美摘牌 进程早于外界预期
- windows 远程登录用户管理
- python utf-8编码转换中文_python实现unicode转中文及转换默认编码的方法
- ubuntu php设置,关于ubuntu php环境设置详解-PHP问题
- 依存句法分析 oracle,spaCy 第三篇:依存分析
- 解决:PHP Deprecated: Comments starting with '#' are deprecated in ……
- android apk自动安装包下载,Android 实现apk文件下载并自动安装
- 嵌入式linux gps,嵌入式Linux平台的GPS数据采集
- 详解百度地图API之驾车导航
- 北京航空航天大学经管学院《量化交易与大数据金融》课程实验 :自选至少5支基金,和一个大盘指数,比较这5支基金的信息比率
- CAD批量打图精灵自动识别纸张大小
- 计算机基础和photoshop的应用,一级计算机基础与Photoshop应用真题
- Fabric - chaincode开发模式
- s5p6818PWM驱动蜂鸣器实验
- iperf3 网络测速工具 —— 筑梦之路
- 阿里云服务器优惠活动中的突发性/共享型/计算型/通用型实例怎么选
- C# 依赖注入:AddTransient、AddScoped、AddSingleton的理解
- Effective C++ 条款1、2、3、4
- 【TA工具】快速结合/叠加多张法线贴图
- 欧洲的计算机博士申请,申请经典案例:欧洲计算机科学专业博士全奖
热门文章
- spring+websocket综合(springMVC+spring+MyBatis这是SSM框架和websocket集成技术)
- 推荐一款移动端的web UI控件 -- mobiscroll
- Android ImageView的scaleType(图片比例类型)属性与adjustViewBounds(调整视图边界)属性
- 正道的光用计算机,正道的光作文500字
- 手写springboot_Spring Boot 入门教程 | 图文讲解
- 关于C10K问题详解-突破单机性能是高性能网络编程
- linux c程序中内核态与用户态内存存储问题
- 如何有效解决C与C++的相互调用问题
- mysql mtop_mysqlmtop2.2运行出错
- red hat linux 远程,Red Hat Linux 远程桌面 – 如何设置