3
哪里可以找到一些系统调用的源代码?例如,我正在寻找如here所述的fstat
的实现。linux系统调用执行
哪里可以找到一些系统调用的源代码?例如,我正在寻找如here所述的fstat
的实现。linux系统调用执行
A system call主要在Linux kernel内部实现,在C standard library中有一个很小的粘合代码。但也请参阅vdso(7)。
从用户地角度来看,系统调用(它们在syscalls(2)列出...)是一个单一的机器指令(通常SYSENTER
)与一些calling conventions(例如,其限定机器寄存器保持系统调用号码 - 例如__NR_stat
from /usr/include/asm/unistd_64.h
....-,以及哪些其他寄存器包含系统调用的参数)。
使用strace(1)来了解哪个系统调用是由给定的程序或进程完成的。
C标准库有一个很小的包装函数(调用内核,在ABI之后,并且处理错误报告& errno
)。
对于stat(2),C环绕功能是例如,在stat/stat.c中为musl-libc。
他们在内核源代码使用SYSCALL_DEFINEx定义,例如[FSTAT这里(http://lxr.free-electrons.com/source/fs/stat.c #L203)。 –