目录
环境:
Kernel Version:Linux-5.10
ARCH:ARM64
一:前言
上一节我们提到了进程的产生方式fork,exec与clone,本节将详细分析fork和exec族系统调用的具体实现。通常这些调用不是由应用程序直接发出的,而是通过一个中间层调用,即负责与内核通信的C标准库。从用户状态切换到内核态的方法在文件kernel/linux-5.10/include/uapi/asm-generic/unistd.h,kernel/linux-5.10/arch/arm64/include/asm/unistd32.h中做了定义,负责与系统调用相关两条内容:
- 定义了预处理常数,将所有系统调用的描述符关联到符号常数,诸如__NR_chdir,__NR_fchmod等。
- 定义了内核内部调用系统调用所有的函数。
#ifndef __SYSCALL
#define __SYSCALL(x, y)
#endif
... ...
#define __NR_fallocate 47
__SC_COMP(__NR_fallocate, sys_fallocate, com