GNU/Linux |
Debian 7.3.0(Wheezy) |
|
![]() |
syscall(2) |
![]() |
syscall − indirect system call
#define
_GNU_SOURCE /* See feature_test_macros(7) */
#include <unistd.h>
#include <sys/syscall.h> /* For SYS_xxx
definitions */
int syscall(int number, ...);
syscall() is a small library function that invokes the system call whose assembly language interface has the specified number with the specified arguments. Employing syscall() is useful, for example, when invoking a system call that has no wrapper function in the C library.
syscall() saves CPU registers before making the system call, restores the registers upon return from the system call, and stores any error code returned by the system call in errno(3) if an error occurs.
Symbolic constants for system call numbers can be found in the header file <sys/syscall.h>.
The return value is defined by the system call being invoked. In general, a 0 return value indicates success. A −1 return value indicates an error, and an error code is stored in errno.
syscall() first appeared in 4BSD.
#define
_GNU_SOURCE
#include <unistd.h>
#include <sys/syscall.h>
#include <sys/types.h>
int
main(int argc, char *argv[])
{
pid_t tid;
tid =
syscall(SYS_gettid);
tid = syscall(SYS_tgkill, getpid(), tid);
}
_syscall(2), intro(2), syscalls(2)
This page is part of release 3.44 of the Linux man-pages project. A description of the project, and information about reporting bugs, can be found at http://www.kernel.org/doc/man-pages/.
![]() |
syscall(2) | ![]() |