EXPORT_SYMBOL的正常使用】的更多相关文章

转自:http://blog.csdn.net/cailiwei712/article/details/7998525 在查看内核驱动代码的时候会经常看到在一些函数后面总会跟EXPORT_SYMBOL()这样的宏定义,通过网上查阅,它的作用大致总结如下: 1.定义说明 把内核函数的符号导出,也可以理解成将函数名作为符号导出:符号的意思就是函数的入口地址,或者说是把这些符号和对应的地址保存起来的,在内核运行的过程中,可以找到这些符号对应的地址的. 2.相关处理 (1).对编译所得的.ko进行str…
EXPORT_SYMBOL的作用是什么? EXPORT_SYMBOL标签内定义的函数或者符号对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用,即使用EXPORT_SYMBOL可以将一个函数以符号的方式导出给其他模块使用. struct snd_card *snd_cards[SNDRV_CARDS]; EXPORT_SYMBOL(snd_cards); It makes a symbol accessible to dynamically loaded modules (pro…
EXPORT_SYMBOL只出现在2.6内核中,在2.4内核默认的非static 函数和变量都会自动导入到kernel 空间的, 都不用EXPORT_SYMBOL() 做标记的.2.6就必须用EXPORT_SYMBOL() 来导出来(因为2.6默认不到处所有的符号). 1.EXPORT_SYMBOL的作用是什么?EXPORT_SYMBOL标签内定义的函数或者符号对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用,即使用EXPORT_SYMBOL可以将一个函数以符号的方式导出给其他…
http://www.cnblogs.com/riskyer/p/3221805.html EXPORT_SYMBOL只出现在2.6内核中,在2.4内核默认的非static 函数和变量都会自动 导入到kernel 空间的, 都不用EXPORT_SYMBOL() 做标记的. 2.6就必须用EXPORT_SYMBOL() 来导出来(因为2.6默认不到处所有的符号). 1.EXPORT_SYMBOL的作用是什么? EXPORT_SYMBOL标签内定义的函数或者符号对全部内核代码公开,不用修改内核代 码…
一般我们编写C程序时,要调用某个文件中的函数,需要在本文件中包含声明有被调用函数的头文件,然后编译连接后,方能找到调用函数.对于模块依赖的情况,不能简单的使用上面的方法,内核提供了一个机制,就是EXPORT_SYMBOL标签内定义的函数或者符号对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用,即使用EXPORT_SYMBOL可以将一个函数以符号的方式导出给其他模块使用.您还可以手工修改内核源代码来导出另外的函数,用于重新编译并加载新内核后的测试. include/module.…
资源: <include/linux/moudule.h> --. #ifndef MODULE_SYMBOL_PREFIX #define MODULE_SYMBOL_PREFIX "" #endif --. struct kernel_symbol       //内核符号结构 { unsignedlong value;  //该符号在内存地址中的地址 constchar *name;     //该符号的名称 }; -- #define __EXPORT_SYMBOL…
内核版本:Linux-4.19 1. EXPORT_SYMBOL 的作用: EXPORT_SYMBOL 定义的函数或者符号对全部内核代码公开,不用修改内核代码就可以在其它内核模块中直接调用,即使用 EXPORT_SYMBOL 可以将一个函数以符号的方式导出给其他模块使用. EXPORT_SYMBOL(name); EXPORT_SYMBOL_GPL(name); 这两个宏均用于给定的符号导出到模块外部._GPL版本导出的符号只能被 GPL 许可证下的模块使用. 我们以 EXPORT_SYMBOL…
转自:http://blog.chinaunix.net/uid-23381466-id-3837650.html 内核版本:2.6.38-11-generic 内核自己都大量利用内核符号表导出函数,那么应该导出呢,ldd3上面说只需要EXPORT_SYMBOL一类的宏导出即可,结果试了很久都不行,最后查看文档,算是明白一点了. 对于导出符号表,内核文档给出了三种解决方案,见尾部,现在忽略. 现在有两个模块,a模块导出函数myprint,b模块使用该函数,想象一下如果a模块 EXPORT_SYM…
EXPORT_SYMBOL只出现在2.6内核中,在2.4内核默认的非static 函数和变量都会自动导入到kernel 空间的, 都不用EXPORT_SYMBOL() 做标记的.2.6就必须用EXPORT_SYMBOL() 来导出来(因为2.6默认不到处所有的符号). 1.EXPORT_SYMBOL的作用EXPORT_SYMBOL标签内定义的函数或者符号对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用,即使用EXPORT_SYMBOL可以将一个函数以符号的方式导出给其他模块使用…
转自:http://blog.csdn.net/angle_birds/article/details/7396748 一个模块mod1中定义一个函数func1:在另外一个模块mod2中定义一个函数func2,func2调用func1.在模块mod1中,EXPORT_SYMBOL(func1);在模块mod2中,extern int func1();就可以在mod2中调用func1了. ================================= EXPORT_SYMBOL只出现在2.6内…