系统调用:最大参数

时间:2014-08-20 07:08:54

标签: c linux

怎么可能没有。 参数可以传入系统调用。 如果我签入内核文件 /asm/unistd.h ,则没有系统调用包含4个以上的参数。

1 个答案:

答案 0 :(得分:7)

这取决于您使用的架构。对于i386,系统调用号旁边最多有6个参数。

syscall(2),您传递系统电话号码的注册号:

   arch/ABI   instruction          syscall #   retval Notes
   ───────────────────────────────────────────────────────────────────
   arm/OABI   swi NR               -           a1     NR is syscall #
   arm/EABI   swi 0x0              r7          r0
   blackfin   excpt 0x0            P0          R0
   i386       int $0x80            eax         eax
   ia64       break 0x100000       r15         r10/r8 bool error/
                                                      errno value
   parisc     ble 0x100(%sr2, %r0) r20         r28
   s390       svc 0                r1          r2     See below
   s390x      svc 0                r1          r2     See below
   sparc/32   t 0x10               g1          o0
   sparc/64   t 0x6d               g1          o0
   x86_64     syscall              rax         rax

论点:

   arch/ABI   arg1   arg2   arg3   arg4   arg5   arg6   arg7
   ──────────────────────────────────────────────────────────
   arm/OABI   a1     a2     a3     a4     v1     v2     v3
   arm/EABI   r0     r1     r2     r3     r4     r5     r6
   blackfin   R0     R1     R2     R3     R4     R5     -
   i386       ebx    ecx    edx    esi    edi    ebp    -
   ia64       out0   out1   out2   out3   out4   out5   -
   parisc     r26    r25    r24    r23    r22    r21    -
   s390       r2     r3     r4     r5     r6     r7     -
   s390x      r2     r3     r4     r5     r6     r7     -
   sparc/32   o0     o1     o2     o3     o4     o5     -
   sparc/64   o0     o1     o2     o3     o4     o5     -
   x86_64     rdi    rsi    rdx    r10    r8     r9     -