2012-04-09 64 views
3

更新以澄清:Unix中的包装函数参数是否有限制?

包装函数被定义为在用户模式下调用的函数,它启动对系统调用的调用(在内核模式下)。例如open或printf。

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

我的介绍是,它应该是六个,因为寄存器的数量,但我不知道。我知道系统调用仅限于六个参数。 (我正在谈论更多寄存器存在的32位和64位)。

感谢

+0

打算做什么,你可以“包装”的功能?系统调用(从应用程序到内核)实际上限于6个参数(在x86 32位上,因为它们使用寄存器来传递参数)。 – 2012-04-09 15:16:33

+1

-1我认为这里有一个很好的问题,但不清楚被问到的是什么。我低调鼓励澄清编辑。 – 2012-04-09 15:22:12

+0

@WilliamPursell - 谢谢,我已经更新了我的问题。现在你可以把-1取回:) – meitalbs 2012-04-09 18:26:38

回答

0

包装函数被定义为所谓的在用户模式下的功能,这 发起系统调用的调用(在内核模式)。例如打开, 或printf。

通过自己定义,有上,他们能接受的参数个数没有限制printf应该马上告诉你。 (但是要注意,open本身是一个系统调用,并有一定的局限性对参数的个数)

但是,当涉及到系统调用openwrite等,Linux的x86的有6个参数的限制。 Read here至于为什么以及如何。

这里是另一个SO张贴在深深对此

What are the calling conventions for UNIX & Linux system calls on x86-64

相关问题