linux内核符号表

来源:互联网 发布:js 数组增加class 编辑:程序博客网 时间:2024/04/28 06:21
所谓内核符号表就是在内核内部函数或变量中可供外部引用的函数和变量的符号表。在 2.6 内核下,使用以下命令可以看到内核符号表:
引用
beyes@linux-beyes:/> cat /proc/kallsyms | more
c0100000 T _text
c0100000 T startup_32
c0100054 t default_entry
c01000b0 T startup_32_smp
c0100132 t checkCPUtype
c01001b3 t is486
c01001ba t is386
c0100227 t check_x87
c010025a t setup_idt
c0100277 t rp_sidt
c01002fa t early_divide_err
c0100300 t early_illegal_opcode
.... ....

在内核符号表中,左边一列是符号地址,右边一列是函数和变量。在一个模块加载后,任何一个被模块导出的符号都会成为内核符号表的一部分。一般情况下,你设计的一个模块实现了自己所需的功能,这里也并不一定需要要所有的符号都导出来。但是,如果希望别人也能用到自己的模块,那就需要将其导出。

使用以下宏可以导出符号到内核符号表:
引用
EXPORT_SYMBOL(符号名);
EXPORT_SYMBOL_GPL(符号名);


使用 EXPORT_SYMBOL_GPL() 只用于包含 GPL 许可权的模块。

示例代码
引用
#include
#include

MODULE_LICENSE("Dual BSD/GPL");

int add_int(int a, int b)
{
    return (a + b);
}

int sub_int(int a, int b)
{
    return (a - b);
}

EXPORT_SYMBOL(add_int);
EXPORT_SYMBOL(sub_int);


编译后用 insmod 加载到内核中,然后执行以下命令:
引用
beyes@linux-beyes:~/C/kernel/modadd> cat /proc/kallsyms |grep add_int
f9d70034 r __ksymtab_add_int    [modadd]
f9d7004c r __kstrtab_add_int    [modadd]
f9d70040 r __kcrctab_add_int    [modadd]
6ce40a9f a __crc_add_int    [modadd]
f9d70000 T add_int    [modadd]
(滤掉一些多余的输出)
beyes@linux-beyes:~/C/kernel/modadd> cat /proc/kallsyms |grep sub_int
f9d7002c r __ksymtab_sub_int    [modadd]
f9d70044 r __kstrtab_sub_int    [modadd]
f9d7003c r __kcrctab_sub_int    [modadd]
bb5e85f9 a __crc_sub_int    [modadd]
f9d70004 T sub_int    [modadd]
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(5912) | 评论(1) | 转发(0) |
0

上一篇:GDB多线程调试

下一篇:linux内核中likely和unlikely的含义

相关热门文章
  • 欢迎xiaoyu_linux在ChinaUnix...
  • linux设备驱动之USB数据传输分...
  • 浅析usb转serial串口设备在lin...
  • [原创]到目前为止,Linux下最...
  • Red Hat Linux 的主要系统目录...
  • linux 常见服务端口
  • xmanager 2.0 for linux配置
  • 【ROOTFS搭建】busybox的httpd...
  • openwrt中luci学习笔记
  • 什么是shell
  • linux dhcp peizhi roc
  • 关于Unix文件的软链接
  • 求教这个命令什么意思,我是新...
  • sed -e "/grep/d" 是什么意思...
  • 谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~

chinaunix网友2010-10-21 19:41:04

很好的, 收藏了推荐一个博客,提供很多免费软件编程电子书下载:http://free-ebooks.appspot.com

回复 | 举报
原创粉丝点击