Linux kernel 其中';s umount系统调用?

Linux kernel 其中';s umount系统调用?,linux-kernel,umount,Linux Kernel,Umount,在文件util-linux-2.17.2/mount/umount.c中写入res=umount(节点) 但是umount函数在哪里?我搜索了很多,但没有找到。umount函数是libc系统库的一部分。您可以使用objdump-T/lib/libc.so.6 | grep umount找到尽可能多的内容。其中一个输出列中的.text条目将指示该函数(及其同级umount2)在该库中定义为可执行代码的符号(相对于全局变量) 该函数通常通过一小段汇编代码来执行内核系统调用。与大多数系统调用相反,gl

在文件
util-linux-2.17.2/mount/umount.c
中写入
res=umount(节点)

但是
umount
函数在哪里?我搜索了很多,但没有找到。

umount
函数是libc系统库的一部分。您可以使用objdump-T/lib/libc.so.6 | grep umount找到尽可能多的内容。其中一个输出列中的
.text
条目将指示该函数(及其同级
umount2
)在该库中定义为可执行代码的符号(相对于全局变量)


该函数通常通过一小段汇编代码来执行内核系统调用。与大多数系统调用相反,glibc不只是将此系统调用包含在其应用程序中。相反,它有一些适当的地方来实现这一点。这一点的含义隐藏在宏扩展的许多层后面,我现在无法让预处理发出最终的汇编代码。

umount是对libc中同名库函数的调用。此函数依次调用umount系统调用。通过阅读系统调用的工作原理,可以了解库函数如何调用内核来执行特定函数。此链接可能会帮助您完成此过程

如果您想知道系统调用umount的位置,请下载最新的内核。转到文件fs/namespace.c。在那里你会发现

SYSCALL\u DEFINE2(umount、char\u user*、name、int、flags)

SYSCALL\u DEFINE1(oldumount,char\u user*,name)

它定义了umount和oldumount函数。

我认为umount()是一个系统调用。标题似乎表明了这一点。除此之外,我还可以发现: