(XNU,是苹果操作系统OS X的内核)
BSD风格系统调用
- 这里的456,仅指BSD风格的系统调用数量;
- 系统调用会经过idt64.s文件中定义的中断号到hndl_unix_scall或hndl_unix_scall64,再通过数组sysent执行不同系统调用;
- 虽然名义上有456个,其实从代码看来相当一部分不会去实现。
Mach风格系统调用
- Mach的“系统调用”叫作mach trap
- 与BSD风格系统调用不同,进入hndl_mach_scall或hndl_mach_scall64,再通过数组mach_trap_table调用不同MACH_TRAP
- Mach trap不多,也不常用
其他两类系统调用
- 还有二种类型的“系统调用”
- 通过hndl_mdep_scall或hndl_mdep_scall64进入数组machdep_call_table/machdep_call_table64,然后再调用不同MACHDEP_CALL_ROUTINE
- 通过hndl_diag_scall64作为起点开始执行