技术解析

如何在 Linux Kernel 3.x 中找到某个 system call 的实现呢
0
2021-07-09 22:16:47
idczone

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


搜索 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 );
}

google: execve site:lxr.free-electrons.com/source

make ARCH=x86 -j2 tags cscope
vim -t sys_execve

arm 的我知道: arch/arm/kernel/call.S 里面有系统调用列表,然后你就可以在内核根目录 ctags -R ,在 vim 里面 tags 了。

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服