16. _syscallN macro
_syscall0(int,mycall) indicates that:
The name of the system call is mycall.
It takes zero arguments.
It returns an int.
_syscall1(int,mycall,int,number) indicates that:
The name of the system call is mycall.
It takes one argument.
The argument is an int named number.
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.