NAME
none - list of all system calls
SYNOPSIS
Linux 2.0 system calls.
DESCRIPTION
As of Linux 2.0.34, there are 164 system calls listed in
/usr/include/asm/unistd.h. This man page lists them (pro-
viding hyperlinks if you read this with a browser).
_llseek(2), _newselect(2), _sysctl(2), access(2), acct(2),
adjtimex(2), afs_syscall, alarm(2), bdflush(2), break,
brk(2), chdir(2), chmod(2), chown(2), chroot(2), clone(2),
close(2), creat(2), create_module(2), delete_module(2),
dup(2), dup2(2), execve(2), exit(2), fchdir(2), fchmod(2),
fchown(2), fcntl(2), fdatasync(2), flock(2), fork(2),
fstat(2), fstatfs(2), fsync(2), ftime, ftruncate(2), get-
_kernel_syms(2), getdents(2), getegid(2), geteuid(2), get-
gid(2), getgroups(2), getitimer(2), getpgid(2), getpgrp(2),
getpid(2), getppid(2), getpriority(2), getrlimit(2), get-
rusage(2), getsid(2), gettimeofday(2), getuid(2), gtty,
idle(2), init_module(2), ioctl(2), ioperm(2), iopl(2),
ipc(2), kill(2), link(2), lock, lseek(2), lstat(2),
mkdir(2), mknod(2), mlock(2), mlockall(2), mmap(2),
modify_ldt(2), mount(2), mprotect(2), mpx, mremap(2),
msync(2), munlock(2), munlockall(2), munmap(2),
nanosleep(2), nice(2), oldfstat, oldlstat, oldolduname,
oldstat, olduname, open(2), pause(2), personality(2), phys,
pipe(2), prof, profil, ptrace(2), quotactl(2), read(2),
readdir(2), readlink(2), readv(2), reboot(2), rename(2),
rmdir(2), sched_get_priority_max(2), sched_get_-
priority_min(2), sched_getparam(2), sched_getscheduler(2),
sched_rr_get_interval(2), sched_setparam(2), sched_set-
scheduler(2), sched_yield(2), select(2), setdomainname(2),
setfsgid(2), setfsuid(2), setgid(2), setgroups(2), set-
hostname(2), setitimer(2), setpgid(2), setpriority(2), set-
regid(2), setreuid(2), setrlimit(2), setsid(2), set-
timeofday(2), setuid(2), setup(2), sgetmask(2), sigac-
tion(2), signal(2), sigpending(2), sigprocmask(2), sigre-
turn(2), sigsuspend(2), socketcall(2), ssetmask(2), stat(2),
statfs(2), stime(2), stty, swapoff(2), swapon(2), sym-
link(2), sync(2), sysfs(2), sysinfo(2), syslog(2), time(2),
times(2), truncate(2), ulimit, umask(2), umount(2),
uname(2), unlink(2), uselib(2), ustat(2), utime(2),
vhangup(2), vm86(2), wait4(2), waitpid(2), write(2), wri-
tev(2).
Of the above, 5 are obsolete, namely oldfstat, oldlstat,
oldolduname, oldstat and olduname (see also obsolete(2)),
and 11 are unimplemented, namely afs_syscall, break, ftime,
gtty, lock, mpx, phys, prof, profil, stty and ulimit (see
also unimplemented(2)). However, ftime(3), profil(3) and
ulimit(3) exist as library routines. The slot for phys is
in use since 2.1.116 for umount2; phys will never be imple-
mented.
Roughly speaking, the code belonging to the system call with
number __NR_xxx defined in /usr/include/asm/unistd.h can be
found in the kernel source in the routine sys_xxx(). (The
dispatch table for i386 can be found in
/usr/src/linux/arch/i386/kernel/entry.S.) There are many
exceptions, however, mostly because older system calls were
superseded by newer ones, and this has been treated somewhat
unsystematically. Below the details for Linux 2.0.34.
The defines __NR_oldstat and __NR_stat refer to the routines
sys_stat() and sys_newstat(), and similarly for fstat and
lstat. Similarly, the defines __NR_oldolduname,
__NR_olduname and __NR_uname refer to the routines
sys_olduname(), sys_uname() and sys_newuname(). Thus,
__NR_stat and __NR_uname have always referred to the latest
version of the system call, and the older ones are for back-
ward compatibility.
It is different with select and mmap. These use five or
more parameters, and caused problems the way parameter pass-
ing on the i386 used to be set up. Thus, while other archi-
tectures have sys_select() ans sys_mmap() corresponding to
__NR_select and __NR_mmap, on i386 one finds old_select()
and old_mmap() (routines that use a pointer to a parameter
block) instead. These days passing five parameters is not a
problem anymore, and there is a __NR__newselect (used by
libc 6) that corresponds directly to sys_select().
Two other system call numbers, __NR__llseek and __NR__sysctl
have an additional underscore absent in sys_llseek() and
sys_sysctl().
Then there is __NR_readdir corresponding to old_readdir(),
which will read at most one directory entry at a time, and
is superseded by sys_getdents().
Finally, the system call 166, with entry point sys_vm86()
does not have a symbolic number at all. This version super-
sedes sys_vm86old() with number __NR_vm86.