Linux源代码中的mount API在哪里实现?

Where does mount API implemented in Linux source code?

我是 Linux 内核的新手,我从 GitHub 上的 repo 克隆了 Linux 源代码。我找不到文件 sys/mount.h 也找不到 mount 函数。

你知道这个文件在源代码中的什么位置吗?我在哪里可以找到它的实现?

如果您不知道系统调用在内核中的何处实现,可以使用一般步骤顺序找到它。您需要将内核源代码下载到您的机器上。

首先找出系统调用需要的参数数量。例如。 mount(2)需要五个参数。

由于mount(2)需要5个参数,在内核源码中搜索SYSCALL_DEFINE5(mount

grep -nr 'SYSCALL_DEFINE5(mount'

这需要一段时间才能 运行,但它最终会找到:

./fs/compat.c:92:COMPAT_SYSCALL_DEFINE5(mount, const char __user *, dev_name,
./fs/namespace.c:3026:SYSCALL_DEFINE5(mount, char __user *, dev_name, char __user *, dir_name,

因此,您要查找的系统调用位于 ./fs/namespace.c 中的第 3026 行。(我使用的是 Linux 4.19.99,因此行号可能在你的内核上有所不同。)