一个系统调用是里面主要是实现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行之后).
| 归档时间: |
|
| 查看次数: |
296 次 |
| 最近记录: |