Kernel linux内核中的系统调用调度在哪里?

Kernel linux内核中的系统调用调度在哪里?,kernel,system-calls,Kernel,System Calls,首先,我应该提到我正在使用2.6.32Linux内核。我正在源代码中寻找根据系统调用ID(在/linux/arch/x86/kernel/syscall\u table\u 32.S中定义)执行正确系统调用的代码。据我所知,系统调用是通过中断完成的,系统调用ID位于eax寄存器中。因此内核必须为中断提供服务,并根据eax寄存器中的ID执行适当的系统调用 我可以在源代码中找到发生这种情况的地方?如果我正确理解了您的问题,我相信您正在/arch/x86/kernel/traps.c中查找system

首先,我应该提到我正在使用2.6.32Linux内核。我正在源代码中寻找根据系统调用ID(在
/linux/arch/x86/kernel/syscall\u table\u 32.S
中定义)执行正确系统调用的代码。据我所知,系统调用是通过中断完成的,系统调用ID位于eax寄存器中。因此内核必须为中断提供服务,并根据eax寄存器中的ID执行适当的系统调用


我可以在源代码中找到发生这种情况的地方?如果我正确理解了您的问题,我相信您正在/arch/x86/kernel/traps.c中查找system_call()-此函数用于保存系统调用号和所有CPU寄存器,但在您的示例(x86)中,它作为/arch/x86/kernel/entry_32.S中的程序集链接出现。如果您有兴趣了解有关这种链接发生方式的更多信息,请参阅O'Reilly的《理解Linux内核》一书中的第6章和第10章