gpt4 book ai didi

linux-kernel - linux系统调用中的参数传递

转载 作者:行者123 更新时间:2023-12-04 05:38:41 35 4
gpt4 key购买 nike

来自 Robert Love 的书,(在系统调用实现中)

Somehow, user-space must relay the parameters to the kernel during the trap. The easiest way to do this is via the same means that the syscall number is passed: The parameters are stored in registers. On x86-32,the registers ebx, ecx, edx, esi, and edi contain, inorder, the first five arguments.In the unlikely case of six or more argu- ments, a single register is used to hold a pointer to user-space where all the parameters are stored.



但是 asymlinkage为每个系统调用加上前缀,这些系统调用期望参数在系统堆栈中。而且当模式切换发生时,参数如何复制到内核堆栈中?

最佳答案

通过系统调用胶合逻辑将参数放入堆栈。所有系统调用都是通过单个中断陷阱进行的(我相信 x86 上的 int 0x80)。此中断处理程序的内核代码执行必要的工作,将参数放入系统调用处理程序的堆栈中。

查看此常见问题解答以回答问题:http://kernelnewbies.org/FAQ/asmlinkage

关于linux-kernel - linux系统调用中的参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11580178/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com