当前位置:  技术问答>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”相似的文件,能让我快速的从众多同名函数中找到哪个才是真正编译进映像文件的那个

|
先将支持不需要的cpu体系结构的源码及头文件删除,试试能行否?

|
使用lxr来读源代码

|
使用sourceinsight看代码~~

|
貌似有 system.map 哈

|
通常同一个函数名会有多份代码,这是kernel支持多个体系结构的原因。你只需要看你关心的体系结构下的实现

就行了,比如x86

|

王道!

|
up

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux Kernel 'sctp_v6_xmit()'函数信息泄露漏洞
  • linux应用层调用kernel接口函数问题。
  • 以模块B对kernel中的函数指针进行赋值可行否?
  • 0.11内核块设备,结束请求函数end_request不怎么懂,请教高手 /kernel/ lk_drv/blk.h Line:109
  • 关于__mod_timer函数(linux/kernel/timer.c中定义的)的问题
  • 关于internal_add_timer函数(linux/kernel/timer.c中定义的)的一个问题
  • java命名空间java.awt.image类kernel的类成员方法: kernel定义及介绍
  • lock_kernel unlock_kernel编译不通过
  • java命名空间java.awt.image类kernel的类成员方法: getheight定义及介绍
  • linux-3ES-13.9.5安装oracle10g时更改/etc/sysctl.conf没有kernel.shmmax,kernel.shmmni
  • java命名空间java.awt.image类kernel的类成员方法: getwidth定义及介绍
  • ▲求助:kernel panic:No init found.try passing init=option to kernel.
  • java命名空间java.awt.image类kernel的类成员方法: getkerneldata定义及介绍
  • kernel too old , kernel panic原因
  • java命名空间java.awt.image类kernel的类成员方法: getyorigin定义及介绍
  • 区分uboot和kernel的宏
  • java命名空间java.awt.image类kernel的类成员方法: clone定义及介绍
  • kernel升级问题,初学,大家指教。
  • CentOS 6.5 下载地址及如何升级内核(kernel)版本到 3.10.28
  • 关于www.kernel.org结构
  • __kernel_vsyscall 是什么?
  • 急!怎么没有/usr/src/kernel目录啊?
  • Uncompressing Linux... done, booting the kernel
  • Come in please! About the kernel.3X
  • 一个Kernel panic的问题怎么解决?
  • [救命]安装Ubuntu 时的Kernel Panic - not syncing 错误~
  • 关于kernel解压!!!!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3