在哪里可以找到某些系统调用的源代码?例如,我正在寻找fstat
的实施.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
viewPager .setCurrentItem(viewPage.getCurrentItem() + 1);
});
。
答案 0 :(得分:6)
system call主要在Linux kernel内部实施,C standard library中有一个微小的胶水代码。但另请参阅vdso(7)。
从用户角度来看,系统调用(它们列在syscalls(2) ...中)是一台机器指令(通常为SYSENTER
),其中包含一些calling conventions(例如,定义哪个机器寄存器保存系统调用号 - 例如__NR_stat
来自/usr/include/asm/unistd_64.h
....-,以及哪些其他寄存器包含系统调用的参数。
使用strace(1)了解给定程序或进程执行的系统调用。
C标准库有一个很小的包装函数(它跟随ABI调用内核,并处理错误报告和errno
)。
对于stat(2),C包裹函数是例如在stat/stat.c中musl-libc。