我在哪里可以找到一些系统调用的源代码?例如,我正在寻找 fstat
的实现,如 here 所述。 .
最佳答案
A system call主要在 Linux kernel 内部实现, 在 C standard library 中有一个小胶水代码.但另见 vdso(7) .
从用户态的角度来看,一个系统调用(它们列在syscalls(2) ...)是一个带有一些calling conventions的机器指令(通常是SYSENTER
) (例如,定义哪个机器寄存器保存系统调用号——例如 /usr/include/asm/unistd_64.h
....- 中的 __NR_stat
,以及哪些其他寄存器包含系统调用的参数)。
使用strace(1)了解给定程序或进程完成了哪些系统调用。
C 标准库有一个微型包装函数(调用内核,在 ABI 之后,处理错误报告 & errno
)。
对于 stat(2) ,C 包装函数是例如在 stat/stat.c对于 musl-libc .
关于linux-kernel - linux系统调用实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35394164/