16. _syscallN macro

  1. _syscall0(int,mycall) indicates that:

  2. The name of the system call is mycall.

  3. It takes zero arguments.

  4. It returns an int.

  1. _syscall1(int,mycall,int,number) indicates that:

  2. The name of the system call is mycall.

  3. It takes one argument.

  4. The argument is an int named number.

  5. It returns an int.

When you expand _syscall1(long,mycall,int,i), you get the following code:

long mycall(int i)

{

return syscall(__NR_mycall, i);

}

But the definition of _syscallN macros are different in the kernel. You can look at /usr/src/linux/include/asm-i386/unistd.h for the definition.