ITKeyword,专注技术干货聚合推荐

注册 | 登录

linux内核符号表

zhaoqiaoshi 分享于 2010-03-25

推荐:EXPORT_SYMBOL linux的内核符号表

 http://hi.baidu.com/adokaixin/blog/item/03d79e8822668d8fa5c27263.html   在内核中通过/proc/kallsyms获得符号的地址   Linux内核符号表/proc/kallsyms的形

2020腾讯云8月秒杀活动,优惠非常大!(领取2860元代金券),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1040

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

[转自] : http://www.delnabla.cn/article.asp?id=30

推荐:Windows内核符号表学习总结

内核符号表 http://blog.csdn.net/vbsourcecode/article/details/8555796 在进行Windows Driver开发调试中,内核符号表是个问题。由于网络不稳定,利用windbg下

内核符号表可以分为“私有”和“公共”。平常所说的内核符号表指的是“公共内核符号表”。     
      我们知道,驱动存在于内核空间,它的每一个函数每一个变量都会有对应的符号,这部分符号也可以称作内核符号,它们不导出的话就只能为自身所用,导出后就可以成为公用,对于导出的那部分的内核符号就是我们常说的内核符号表。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内核没有轻量级进程(线程)的概念,因此不能

[转自] : http://www.delnabla.cn/article.aspid=30 内核符号表可以分为“私有”和“公共”。平常所说的内核符号表指的是“公共内核符号表”。            我们知道,驱动存在于内核空间,它

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。