免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4032 | 回复: 10
打印 上一主题 下一主题

怎样快速寻找到一个函数的定义?? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-20 16:27 |只看该作者 |倒序浏览
在一个linux 2.6相关的项目里,我把我认为会被调用到的源文件加载到source insight里,同步后,仍然无法找到函数alloc_etherdev的定义。

而我在另一个linux 2.4平台里的drivers/net/Net_init.c里找到了这个函数,而在linux 2.6里,根本就没有找到drivers/net/Net_init.c

所以,我想:alloc_etherdev函数定义应该在其它文件中,但又不知道在内核源代码里的哪个文件。


请问:怎样在内核源码中快速地寻找到那个函数的定义??

论坛徽章:
0
2 [报告]
发表于 2008-10-21 08:42 |只看该作者
我的方法是:在认为有可能的文件夹里,比如driver,运行grep "函数名称" * -nr, 呵呵。

论坛徽章:
0
3 [报告]
发表于 2008-10-21 09:48 |只看该作者
可是现在很现实的一个问题是,我在这个linux2.6源码里找不到alloc_etherdev的定义。

怎样才能找到它呢?大家帮帮忙,谢谢!

论坛徽章:
0
4 [报告]
发表于 2008-10-21 11:16 |只看该作者
你用的是那个版本的内核?
2.6.23开始和之前的版本不同。
2.6.23以前的版本,alloc_etherdev()在/net/ethernet/eth.c中
而2.6.23开始,alloc_etherdev()的定义是include/linux/etherdevice.h
#define alloc_etherdev(sizeof_priv) alloc_etherdev_mq(sizeof_priv, 1)

论坛徽章:
0
5 [报告]
发表于 2008-10-21 13:39 |只看该作者
是否没有包括所有的文件?

论坛徽章:
0
6 [报告]
发表于 2008-10-21 13:44 |只看该作者
cscope等工具,不行了就grep.

论坛徽章:
0
7 [报告]
发表于 2008-10-21 15:18 |只看该作者
2.6.21内核,在/net/ethernet/eth.c能找到.你用sourceinsight有没有同步?还是你内核的文件不全?很容易找到的啊

论坛徽章:
0
8 [报告]
发表于 2008-10-22 09:44 |只看该作者
我用的是2.6.14的内核,在drivers/net/里没有看到有ethernet文件夹

还有没有可能是在其它地方????

论坛徽章:
0
9 [报告]
发表于 2008-10-22 14:40 |只看该作者
原帖由 todayrw 于 2008-10-22 09:44 发表
我用的是2.6.14的内核,在drivers/net/里没有看到有ethernet文件夹

还有没有可能是在其它地方????

晕,不在drivers文件夹下,在linux内核根目录的net文件夹里的ethernet子文件夹

论坛徽章:
0
10 [报告]
发表于 2008-10-22 15:26 |只看该作者
谢了!richardhesidu
:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP