5.3 系统调用_系统调用处理程序

来源:互联网 发布:练钢琴曲的软件 编辑:程序博客网 时间:2024/06/08 13:31

    通知内核的机制是靠软中断实现的:通过引发一个异常来促使系统切换到内核态去执行异常处理程序。此时的异常处理程序实际上就是系统调用处理程序。

 

5.3.1 指定恰当的系统调用

    因为所有的系统调用陷入内核的方式都一样,所以仅仅是陷入内核空间是不够的。因此必须把系统调用号一并传给内核。

    system_call()函数通过将给定的系统调用号与NR_syscalls做比较来检查其有效性。如果它大于或者等于NR_syscalls,该函数就返回-ENOSYS。否则,就执行相应的系统调用。

 

5.3.2 参数传递

    除了系统调用号以外,大部分系统调用都还需要一些外部的参数输入。所以,在发生异常的时候,应该把这些参数从用户空间传给内核。最简单的办法就是像传递系统调用号一样:把这些参数也存放在寄存器里。