如何在Linux源代码中找到特定系统调用的定义?

时间:2013-01-26 22:44:35

标签: c linux kernel system-calls

我最近想看看如何在Linux内核中实现open()系统调用。查看系统调用表表明我正在寻找的函数的名称是sys_open(),所以我对它进行了抨击。我找不到任何声明,我能得到的最接近的是do_sys_open fs/open.c。是以某种方式翻译成这个功能?我可能错过了什么?

1 个答案:

答案 0 :(得分:7)

不,do_sys_open不是sys_open的实现,只是openopenat的常用代码。

Syscall函数名称总是sys_ 某些,由有趣的预处理器宏生成(SYSCALL_DEFINEn,其中n是参数的数量。)< / p>

如您所见(非常接近do_sys_open):

SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, umode_t, mode)
{
        long ret;
        ....

open系统调用的代码。