【发布时间】:2012-07-19 18:41:56
【问题描述】:
来自 Robert Love 的书,(在系统调用实现中)
不知何故,用户空间必须在陷阱期间将参数传递给内核。最简单的方法是通过传递系统调用号的相同方式: 参数存储在寄存器中。在 x86-32 上,寄存器 ebx、ecx、edx、esi 和 edi 按顺序包含前五个参数。在不太可能的情况下,有六个或更多参数 ments,单个寄存器用于保存指向用户空间的指针,其中所有参数 被存储。
但是asymlinkage 是每个系统调用的前缀,这将期望参数位于系统堆栈中。还有当模式切换发生时,如何将参数复制到内核堆栈中?
【问题讨论】:
标签: linux-kernel system-calls kernel