SYSCALLS(2)         Linux Programmer's Manual         SYSCALLS(2)

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),  get-
       pgrp(2),  getpid(2),  getppid(2),   getpriority(2),   get-
       rlimit(2),  getrusage(2), getsid(2), gettimeofday(2), get-
       uid(2),  gtty,  idle(2),  init_module(2),  ioctl(2),   io-
       perm(2),   iopl(2),   ipc(2),   kill(2),   link(2),  lock,
       lseek(2), lstat(2), mkdir(2), mknod(2),  mlock(2),  mlock-
       all(2),  mmap(2),  modify_ldt(2),  mount(2),  mprotect(2),
       mpx, mremap(2), msync(2), munlock(2), munlockall(2),  mun-
       map(2),   nanosleep(2),   nice(2),   oldfstat,   oldlstat,
       oldolduname, oldstat, olduname, open(2), pause(2), person-
       ality(2),  phys,  pipe(2),  prof,  profil, ptrace(2), quo-
       tactl(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_get-
       scheduler(2), sched_rr_get_interval(2), sched_setparam(2),
       sched_setscheduler(2),  sched_yield(2),  select(2),   set-
       domainname(2),  setfsgid(2),  setfsuid(2), setgid(2), set-
       groups(2), sethostname(2), setitimer(2), setpgid(2),  set-
       priority(2),  setregid(2), setreuid(2), setrlimit(2), set-
       sid(2), settimeofday(2), setuid(2), setup(2), sgetmask(2),
       sigaction(2),  signal(2),  sigpending(2),  sigprocmask(2),
       sigreturn(2), sigsuspend(2),  socketcall(2),  ssetmask(2),
       stat(2), statfs(2), stime(2), stty, swapoff(2), swapon(2),
       symlink(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), writev(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 implemented.

       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 rou-
       tines 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  lat-
       est version of the system call, and the older ones are for
       backward compatibility.

       It is different with select and mmap.  These use  five  or
       more  parameters,  and  caused  problems the way parameter
       passing on the i386 used to be set up. Thus,  while  other
       architectures have sys_select() ans sys_mmap() correspond-
       ing 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
       supersedes sys_vm86old() with number __NR_vm86.

Linux 2.0                 12 April 1996                         1