SYSCALL(2) BSD System Calls Manual SYSCALL(2)
syscall, __syscall -- indirect system call
syscall(int number, ...);
__syscall(quad_t number, ...);
syscall() performs the system call whose assembly language interface has
the specified number with the specified arguments. Symbolic constants
for system calls can be found in the header file <sys/syscall.h>.
Since different system calls have different return types, a prototype of
__syscall specifying the correct return type should be declared locally.
This is especially important for system calls returning larger-than-int
The __syscall form should be used when one or more of the parameters is a
64-bit argument to ensure that argument alignment is correct. This sys-
tem call is useful for testing new system calls that do not have entries
in the C library.
The return values are defined by the system call being invoked. In gen-
eral, for system calls returning int, a 0 return value indicates success.
A -1 return value indicates an error, and an error code is stored in
The predecessor of these functions, the former indir() system call, first
appeared in Version 4 AT&T UNIX. The syscall() function first appeared
There is no way to simulate system calls that have multiple return values
such as pipe(2).
BSD March 27, 2017 BSD