怎样才能找到系统函数的函数体呢
作毕业设计与到一个难题。 分析代码时遇到好多linux系统定义的函数。有办法快速找到么?来先看一段代码
#include <linux/time.h>
void do_gettimeofday(struct timeval *tv)
{
unsigned long flags;
unsigned long usec, sec;
read_lock_irqsave(&xtime_lock, flags);
sec = xtime.tv_sec;
usec = xtime.tv_usec + do_gettimeoffset();
read_unlock_irqrestore(&xtime_lock, flags);
while (usec >= 1000000) {
usec -= 1000000;
sec++;
}
tv->tv_sec = sec;
tv->tv_usec = usec;
}
void MyDelay(unsigned long delay)
{
struct timeval tv;
do_gettimeofday(&tv)
unsigned long start = tv.tv_usec;//unsigned long start = tv.tv_sec;
while(tv.tv_usec - start <delay)
do_gettimeofday(&tv)
}
原想开源代码公开的好找哈。那么多代码。 真是没下手的地方了 。
我c/c++还可以,
我现在用的就是linux。
可不能快速地找到系统函数的函数体。
有人碰到过相似的问题么 ?
你们是怎么解决的呢 ?
做系统开发时应该经常遇到这种问题,期望能得到你的帮助
告诉我用什么方法。或者使用什么工具也行吧。总会有方法的
有个能查出函数作用的手册也行
谢谢你的帮助
[ 本帖最后由 cswat 于 2007-12-12 19:35 编辑 ] unix 环境高级编程(译得不好)
unix系统编程(没看过)
man 函数名(好用,如果有台Linux,可以试试) 不明白你的含义!只要存在函数实现,难道还有找不到的道理??
vi cn+],tags难道不行?还没有遇到过!
回复 #1 cswat 的帖子
内核源代码很庞大,想要具体函数的 代码不是太好找的 。我的 办法是本头文件 中没有就在该文件所包含的头文件中找,这样一直找下去。
不过最好的办法是花上一定的时间看一本好书(推荐[美]Robert Love 的《Lnux内核设计与实现(Linux Kernel Development--Second Edition)》来对内核的代码有个概括了解。这样你找代码会很轻松 找open function:
cd linuxx.x.xx.x(source)
grep -i -R -l open cscope -Rb
在你的 ~/.vimrc 最后加入
if has("cscope")
set csprg=/usr/local/bin/cscope
set csto=0
set cst
set nocsverb
" add any database in current directory
if filereadable("cscope.out")
cs add cscope.out
" else add database pointed to by environment
elseif $CSCOPE_DB != ""
cs add $CSCOPE_DB
endif
set csverb
endif
修改 /usr/local/bin/cscope 为实际 cscope 所在的路径
浏览代码时用 <CTRL> + ] 即可
另:kernel 代码在变,没有什么稳定的文档描述 kernel API 的,多读吧,
看看 Documentation/* 也很有帮助 linux-source-2.6.20\arch\arm\kernel\calls.S,这是 ARM 处理器里面对系统调用的处理。顺着藤能摸到根。
^_^
source insight,源代码阅读工具!
页:
[1]