如何在 Linux Kernel 3.x 中找到某个 system call 的实现呢

2015-08-28 13:46:30 +08:00
 KyL

比如我想要找到execve在内核中的实现代码。我在源码中搜索sys_execve,在代码中只能找到头文件声明,系统调用注册的相关代码,找不到函数体。其他系统调用也都有这个问题。请问该如何寻找呢?

2431 次点击
所在节点    Linux
4 条回复
whatot
2015-08-28 14:29:25 +08:00
搜索 do_execve 看看,我也是 google 到的。

linux-4.1 fs/exec.c:1704

SYSCALL_DEFINE3 (execve,
const char __user *, filename,
const char __user *const __user *, argv,
const char __user *const __user *, envp )
{
return do_execve (getname (filename ), argv, envp );
}
lynx
2015-08-28 14:51:48 +08:00
google: execve site:lxr.free-electrons.com/source
liwei
2015-08-28 15:09:35 +08:00
make ARCH=x86 -j2 tags cscope
vim -t sys_execve
oska874
2015-08-28 17:31:03 +08:00
arm 的我知道: arch/arm/kernel/call.S 里面有系统调用列表,然后你就可以在内核根目录 ctags -R ,在 vim 里面 tags <func_name> 了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/216670

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX