OpenBSD manual page server

Manual Page Search Parameters

SYSCALL(2) System Calls Manual SYSCALL(2)

syscall, __syscallindirect system call

#include <sys/syscall.h>
#include <unistd.h>

int
syscall(int number, ...);

__syscall(quad_t number, ...);

() 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 results.

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 system 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 general, 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 errno.

The predecessor of these functions, the former indir() system call, first appeared in Version 4 AT&T UNIX. The syscall() function first appeared in 3BSD.

There is no way to simulate system calls that have multiple return values such as pipe(2).

September 10, 2015 OpenBSD-5.9