Mac操作系统XNU内核(二)系统调用
2015-03-23 17:38
85 查看
[b](XNU,是苹果操作系统OS X的内核)[/b]
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作为起点开始执行
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作为起点开始执行
相关文章推荐
- Mac操作系统XNU内核(九)系统调用过程代码某些细节:系统调用BSD和mach
- Mac操作系统XNU内核(八)系统调用过程代码简单分析
- XNU内核案例(一)BSD系统调用fork的详细分析
- 【内核】Linux添加系统调用(静态,非动态加载模块)
- Linux内核学习之四--进程、进程调度、系统调用、proc文件系统和内核异常分析
- Linux操作系统分析(4)- 更新内核与添加系统调用
- 使用内核模块添加系统调用
- Linux 内核学习——系统调用(fork)
- 使用 Linux 系统调用的内核命令
- akira之修改linux 4.6.2内核并添加系统调用
- akira之修改linux 3.6.8内核并添加系统调用
- sys_umount系统调用的实现注释。2.4版内核
- Linux 内核与用户空间通信 - netlink使用方法 (不同于 系统调用 和 ioctl)
- 系统调用 编译内核 (转)
- 内核线程&&系统调用exit&&wait4&&撤销进程
- 话说2.6 内核 系统调用中的sys_open ,sys_read 不见了???
- linux 3.12内核里系统调用常见的问题
- Linux操作系统-Lab3 更新内核与添加系统调用
- 例说linux内核与应用数据通信(一):添加一个系统调用