怎样快速寻找到一个函数的定义??

发布于 2022-09-22 12:40:02 字数 300 浏览 7 评论 0

在一个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函数定义应该在其它文件中,但又不知道在内核源代码里的哪个文件。

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

蓝咒 2022-09-29 12:40:02

我的方法是:在认为有可能的文件夹里,比如driver,运行grep "函数名称" * -nr, 呵呵。

心凉 2022-09-29 12:40:02

可是现在很现实的一个问题是,我在这个linux2.6源码里找不到alloc_etherdev的定义。

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

迷你仙 2022-09-29 12:40:02

你用的是那个版本的内核?
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)

冷月断魂刀 2022-09-29 12:40:02

是否没有包括所有的文件?

唯憾梦倾城 2022-09-29 12:40:02

cscope等工具,不行了就grep.

寻梦旅人 2022-09-29 12:40:02

2.6.21内核,在/net/ethernet/eth.c能找到.你用sourceinsight有没有同步?还是你内核的文件不全?很容易找到的啊

末が日狂欢 2022-09-29 12:40:02

我用的是2.6.14的内核,在drivers/net/里没有看到有ethernet文件夹

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

过期以后 2022-09-29 12:40:02

原帖由 todayrw 于 2008-10-22 09:44 发表
我用的是2.6.14的内核,在drivers/net/里没有看到有ethernet文件夹

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

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

早茶月光 2022-09-29 12:40:02

谢了!richardhesidu
:)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文