- indirect system call
/usr/ucb/cc [ flag ... ] file ... #include <sys/syscall.h> int syscall(number, arg, ...) int number;
syscall() performs the function whose assembly language interface has the specified number, and arguments arg . . .. Symbolic constants for functions can be found in the header <sys/syscall.h>.
On error syscall() returns -1 and sets the external variable errno (see Intro(2)).
Use of these interfaces should be restricted to only applications written on BSD platforms. Use of these interfaces with any of the system libraries or in multi-thread applications is unsupported.
There is no way to use syscall() to call functions such as pipe(2) which return values that do not fit into one hardware register.
Since many system calls are implemented as library wrappers around traps to the kernel, these calls may not behave as documented when called from syscall(), which bypasses these wrappers. For these reasons, using syscall() is not recommended.