Linux 中多重系统调用的原因
我想知道,Linux 中 _syscall0 到 _syscall6 处理不同数量的参数的原因是什么。仅使用 _syscall6 并让调用代码为未使用的参数传入空值是否存在任何安全/性能问题?
I was wondering, what is the reason for having _syscall0 to _syscall6 in Linux to handle different number of parameters. Are there any security/performance issues with having just _syscall6 alone and letting calling code pass in null values for unused parameters?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
需要减少所需寄存器副本的数量并提高性能。
每个参数都需要从用户的 ABI 移至内核内的参数传递约定。
此外,某些此类系统调用对于地址参数的行为也有所不同。但这种转换只需要很少数量的拱门。
It is needed to decrease number of needed register copy and improve performance.
Each parameter needs to be moved form user's ABI into parameter-passing convention inside the kernel.
Also, some of such syscalls behaves differently with address parameters. But such conversion is needed on little number of archs.