linux系统调用实现

mah*_*ood 3 system-calls linux-kernel

我在哪里可以找到某些系统调用的源代码?例如,我正在寻找这里fstat描述的实现.

Bas*_*tch 6

一个系统调用是里面主要是实现Linux内核,用在一个很小的胶水代码C标准库.但另见vdso(7).

从用户域的角度来看,系统调用(它们在syscalls(2) ... 中列出)是一个单机器指令(通常SYSENTER),带有一些调用约定(例如,定义哪个机器寄存器保存系统调用号 - 例如__NR_stat来自/usr/include/asm/unistd_64.h....-,以及哪些其他寄存器包含系统调用的参数).

使用strace(1)来了解给定程序或进程执行的系统调用.

C标准库有一个很小的包装函数(在ABI之后调用内核,并处理错误报告和errno).

对于stat(2),C包装函数例如在stat/statc中用于musl-libc.

内核代码中,大部分工作发生在fs/stat.c中(例如在207行之后).

另见这个那个答案