1. 系统调用接口
1.1 Linux系统调用概念
一个已经安装的系统所支持的系统调用都可以在/usr/include/bits/syscall.h 文件里看到 。
1.2 用户编程接口(库函数)
1.3 内核服务例程(sys_abc())
1.4 系统调用过程
下面使用一个例子来简单说明系统调用过程:
用户程序中调用库函数 abc();
系统加载 libc 库调用索引和参数后,执行 int $0x80 或者 sysenter 汇编指令进入系统调用(在老版本的 Linux 内核中只支持 int $0x80 中断方式),执行 system_call()函数;
system_call()函数根据传递过来的参数处理所有的系统调用。使用 system_call_table[参数]执行系统调用。
系统调用返回;
执行 iret 或者 sysexit 汇编指令两种方式退出系统调用,并调用 resume_userspace()函数进入用户空间。
继续在 libc 库中执行,执行完成后返回到用户应用程序中。
1.5 系统调用传递的参数