linux内核符号表
来源:互联网 发布:uniprotkb数据库使用 编辑:程序博客网 时间:2024/04/30 04:31
[转自] : http://www.delnabla.cn/article.asp?id=30
内核符号表可以分为“私有”和“公共”。平常所说的内核符号表指的是“公共内核符号表”。
我们知道,驱动存在于内核空间,它的每一个函数每一个变量都会有对应的符号,这部分符号也可以称作内核符号,它们不导出的话就只能为自身所用,导出后就可以成为公用,对于导出的那部分的内核符号就是我们常说的内核符号表。insmod的时候并不是所有的函数都得到内核符号表去寻找对应的符号,因为每一个驱动在自己分配的空间里也会存在一份符号表,里面有关于这个驱动里使用到的变量以及函数的一些符号,驱动首先会在这里面找,如果发现某个符号没有了,那么就会去公共内核符号表中搜索,搜素到了,则该模块加载成功,搜索不到则该模块加载失败。
对于2.4内核和2.6内核的内核符号表是有区别的,2.4内核默认情况下模块中的非静态全局变量以及非静态函数在模块加载后会自动导出到内核符号表中,而2.6内核默认情况下是不会自动导出的,需要显式调用宏EXPORT_SYMBOL才能导出。导出的符号前面一般标注有r标记。可以通过nm -l xx.ko来查看某一个模块里的符号情况。或者通过查看内核符号表文件也行。对于2.4是:cat /proc/ksyms,对于2.6是:cat /proc/kallsyms.
最后总结,对于一个模块来讲,如果仅依靠自身就可以实现自己的功能,那么可以不需要导出任何符号,只有其他模块中需要使用到该模块提供的函数时,就必须要进行导出操作。
- linux内核符号表
- linux内核符号表
- linux内核符号表
- linux内核符号表
- linux 内核符号表
- Linux内核符号表
- LINUX内核符号表
- linux内核符号表
- Linux内核符号表
- linux内核符号表
- Linux内核符号表
- Linux内核符号表
- linux内核符号表
- linux内核符号表
- linux内核符号表
- Linux内核符号表
- linux内核符号表
- linux内核符号表
- C++智能指针(整理小结)
- -------------------SQL 2005更该排序规则---------------
- VS2003 试图运行项目时出错,无法启动调试。没有正确安装调试器。请运行安装程序安装或修复调试器。
- 开源硬件能否复制开源软件的成功?
- 认识Android 的两层架构
- linux内核符号表
- 智能指针的标准之争:Boost vs. Loki
- C++标准auto_ptr智能指针机制
- Java常用类介绍
- 女生 学会爱惜自己
- 进程分配用户空间或是文件或者设备文件空间映射函数分析(三)
- 12580面试心得。
- 程序员面试题精选(07)-翻转句子中单词的顺序
- T-SQL入门攻略之5-T-SQL的变量与常量