在看协议栈代码时首先看到的时系统调用,系统调用时通过中断产生,那内核是如何建立这种对应关系。
以X86为例:
在trap_init中有一个注册set_system_trap_gate(SYSCALL_VECTOR, &system_call);
其中# define SYSCALL_VECTOR 0x80为中断号
而system_call正是内核系统调用的入口函数
所以只要用户态发出int 0x80的中断就会进入系统调用。
在看协议栈代码时首先看到的时系统调用,系统调用时通过中断产生,那内核是如何建立这种对应关系。
以X86为例:
在trap_init中有一个注册set_system_trap_gate(SYSCALL_VECTOR, &system_call);
其中# define SYSCALL_VECTOR 0x80为中断号
而system_call正是内核系统调用的入口函数
所以只要用户态发出int 0x80的中断就会进入系统调用。