none - list of all system calls


     Linux 2.0 system calls.


     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-

     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-

     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

     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.