【发布时间】:2016-05-24 05:46:11
【问题描述】:
当我们在系统调用事件引发时运行应用程序时,系统调用事件是否会通过 net-link 传递给内核?或 netlink 与系统调用有关,请告诉我。
【问题讨论】:
标签: kernel system-calls
当我们在系统调用事件引发时运行应用程序时,系统调用事件是否会通过 net-link 传递给内核?或 netlink 与系统调用有关,请告诉我。
【问题讨论】:
标签: kernel system-calls
每当需要触发 Syscall 时,用户空间程序在按照 syscall 的要求复制寄存器 eax、ebx、ecx、edx、esi 和 edi 中的几个值后执行命令 int 0x80。
int 0x80 执行后,PC 跳转到该软中断的 ISR。
系统调用例程由set_system_trap_gate(MY_SYSCALL_VECTOR, entry_INT80_32); 设置,您可以在此处查看arch/x86/kernel/traps.c。
内核中Syscall的入口点是entry_INT80_32,可以在arch/x86/entry/entry_32.S找到,它由链接脚本ENTRY(entry_INT80_32)在同一个文件中定义。
通过这个入口点,您可以检查它是如何复制寄存器 eax、ebx、ecx、edx、esi 和 edi 的值的。然后根据系统调用号移动到特定的系统调用,执行并返回到用户空间。
【讨论】: