当前位置: 技术问答>linux和unix
怎样从kernel源码中众多的同名函数中,区分出哪一个才与我们相关的
来源: 互联网 发布时间:2016-06-26
本文导语: 小弟,我正准备读内核源码,其中有些同名函数会在很多文件中被定义,怎样快速找到哪个函数定义才是与我们有关的呢? 比如:以setup_arch函数为例,在内核中有很多个文件都定义了它,我怎么能快速的知道,哪个...
小弟,我正准备读内核源码,其中有些同名函数会在很多文件中被定义,怎样快速找到哪个函数定义才是与我们有关的呢?
比如:以setup_arch函数为例,在内核中有很多个文件都定义了它,我怎么能快速的知道,哪个文件中定义的setup_arch函数才是我的S3C2440所需要的呢?
我知道,linux/arch/arm/kernel/setup.c文件中定义的那个setup_arch函数是我的S3C2440所需要的,但是这是需要分析才知道的。
在u-boot中,就有一种快速方法“从众多的同名函数中找到与我们相关的那一个”:
编译出来完的uboot会生成一个u-boot.map文件,你只要以这个“函数的名字”为关键字去u-boot.map中查找,就能找到编译出来的uboot映像,使用的是哪个文件中的函数了。
比如:uboot源码中对icache_enable函数的定义会存在于很多文件中,那么到底哪个才是与我们有关的呢?
我们只要去u-boot.map文件查找“icache_enable ”,就会看到:
“ .text 0x33f98f18 0x104 cpu/arm920t/libarm920t.a(cpu.o)
0x33f98fb8 icache_status
0x33f98fe4 icache_enable “
所以cpu/arm920t/libarm920t.a(cpu.o)也就是cpu/arm920t/cpu.c中定义的icache_enable函数才是真正编译进内核的,也就是我们所需要的。
所以,我的问题是kernel中有没有一个和“u-boot.map”相似的文件,能让我快速的从众多同名函数中找到哪个才是真正编译进映像文件的那个
比如:以setup_arch函数为例,在内核中有很多个文件都定义了它,我怎么能快速的知道,哪个文件中定义的setup_arch函数才是我的S3C2440所需要的呢?
我知道,linux/arch/arm/kernel/setup.c文件中定义的那个setup_arch函数是我的S3C2440所需要的,但是这是需要分析才知道的。
在u-boot中,就有一种快速方法“从众多的同名函数中找到与我们相关的那一个”:
编译出来完的uboot会生成一个u-boot.map文件,你只要以这个“函数的名字”为关键字去u-boot.map中查找,就能找到编译出来的uboot映像,使用的是哪个文件中的函数了。
比如:uboot源码中对icache_enable函数的定义会存在于很多文件中,那么到底哪个才是与我们有关的呢?
我们只要去u-boot.map文件查找“icache_enable ”,就会看到:
“ .text 0x33f98f18 0x104 cpu/arm920t/libarm920t.a(cpu.o)
0x33f98fb8 icache_status
0x33f98fe4 icache_enable “
所以cpu/arm920t/libarm920t.a(cpu.o)也就是cpu/arm920t/cpu.c中定义的icache_enable函数才是真正编译进内核的,也就是我们所需要的。
所以,我的问题是kernel中有没有一个和“u-boot.map”相似的文件,能让我快速的从众多同名函数中找到哪个才是真正编译进映像文件的那个
|
先将支持不需要的cpu体系结构的源码及头文件删除,试试能行否?
|
使用lxr来读源代码
|
使用sourceinsight看代码~~
|
貌似有 system.map 哈
|
通常同一个函数名会有多份代码,这是kernel支持多个体系结构的原因。你只需要看你关心的体系结构下的实现
就行了,比如x86
就行了,比如x86
|
王道!
|
up
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。