3

更新澄清:

Wrapper 函数定义为在用户模式下调用的函数,它发起对系统调用的调用(在内核模式下)。例如 open 或 printf。

我想知道包装函数可以获得的参数数量是否有任何限制?

我的直觉是,由于寄存器的数量,它应该是六个,但我不确定。我知道系统调用仅限于六个参数。(我说的是存在更多寄存器的 32 位和 64 位)。

谢谢

4

1 回答 1

0

Wrapper 函数定义为在用户模式下调用的函数,它发起对系统调用的调用(在内核模式下)。例如 open 或 printf。

根据您自己的定义,他们可以接收的参数数量没有限制printf应该马上告诉你的。(但请注意,这open本身就是一个系统调用,并且对参数的数量有限制)

但是当涉及到系统调用open时,writeLinux-x86有 6 个参数的限制阅读此处了解为什么以及如何发生这种情况。

这是另一篇关于此的深入探讨的 SO 帖子

x86-64 上 UNIX 和 Linux 系统调用的调用约定是什么

于 2012-04-09T18:37:32.327 回答