我最近想看看如何在Linux内核中实现open()
系统调用。查看系统调用表表明我正在寻找的函数的名称是sys_open()
,所以我对它进行了抨击。我找不到任何声明,我能得到的最接近的是do_sys_open
fs/open.c
。是以某种方式翻译成这个功能?我可能错过了什么?
答案 0 :(得分:7)
不,do_sys_open
不是sys_open
的实现,只是open
和openat
的常用代码。
Syscall函数名称总是sys_
某些,由有趣的预处理器宏生成(SYSCALL_DEFINEn
,其中n
是参数的数量。)< / p>
如您所见(非常接近do_sys_open
):
SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, umode_t, mode)
{
long ret;
....
此是open
系统调用的代码。