Manual Reference Pages  - SYSCALL (2)

NAME

syscall - indirect system call

CONTENTS

Synopsis
Description
Return Value
Notes
Example
See Also
Colophon

SYNOPSIS


#define _GNU_SOURCE         /* See feature_test_macros(7) */ 

#include <unistd.h> 

#include <sys/syscall.h>   /* For SYS_xxx definitions */ 

int syscall(int number, ...);

DESCRIPTION

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>.

RETURN VALUE

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.

NOTES

syscall() first appeared in 4BSD.

EXAMPLE

#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); }

SEE ALSO

_syscall(2), intro(2), syscalls(2)

COLOPHON

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/.


Linux SYSCALL (2) 2012-08-14
blog comments powered by Disqus