man syscalls (Appels systèmes) - liste des appels-systèmes.
NOM
liste - liste des appels-systèmes.
SYNOPSIS
Les appels systèmes de Linux 2.4.
DESCRIPTION
L'appel-système est l'interface fondamentale entre une application et le noyau Linux. Avec Linux 2.4.17, il existe 1100 appels-système indiqués dans /usr/include/asm-*/unistd.h. Cette page de manuel liste ceux communs à la plupart des plates-formes, et vous fournit donc des liens hypertexte si vous utilisez un logiciel de présentation du manuel permettant les parcours.
_llseek(2), _newselect(2), _sysctl(2), accept(2), access(2), acct(2), adjtimex(2), afs_syscall, alarm(2), bdflush(2), bind(2), break, brk(2), cacheflush(2), capget(2), capset(2), chdir(2), chmod(2), chown(2), chown32, chroot(2), clone(2), close(2), connect(2), creat(2), create_module(2), delete_module(2), dup(2), dup2(2), execve(2), exit(2), fchdir(2), fchmod(2), fchown(2), fchown32, fcntl(2), fcntl64, fdatasync(2), flock(2), fork(2), fstat(2), fstat64, fstatfs(2), fsync(2), ftime, ftruncate(2), ftruncate64, get%_kernel%_syms(2), get%cwd(2), get%dents(2), get%dents64, get%egid(2), get%egid32, get%euid(2), get%euid32, get%gid(2), get%gid32, get%groups(2), get%groups32, get%itimer(2), get%pagesize(2), get%peername(2), get%pmsg, get%pgid(2), get%pgrp(2), get%pid(2), get%ppid(2), get%priority(2), get%resgid(2), get%resgid32, get%resuid(2), get%resuid32, get%rlimit(2), get%rusage(2), get%sid(2), get%sockname(2), get%sockopt(2), get%tid, get%timeofday(2), get%uid(2), get%uid32, gtty, idle, init_module(2), ioctl(2), io%perm(2), iopl(2), ipc(2), kill(2), lchown(2), lchown32, link(2), listen(2), lock, lseek(2), lstat(2), lstat64, madvise(2), mincore(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), nfsservctl(2), nice(2), oldfstat, oldlstat, oldolduname, oldstat, oldumount, olduname, open(2), pause(2), personality(2), phys, pipe(2), pivot_root(2), poll(2), prctl(2), pread(2), prof, profil, ptrace(2), putpmsg, pwrite(2), query_module(2), quotactl(2), read(2), readahead, readdir(2), readlink(2), readv(2), reboot(2), recv(2), recvfrom(2), recvmsg(2), rename(2), rmdir(2), rt_sigaction, rt_sigpending, rt_sigprocmask, rt_sigqueueinfo, rt_sigreturn, rt_sigsuspend, rt_sigtimedwait, sched_%get_%priority_max(2), sched_%get_%priority_min(2), sched_%get%param(2), sched_%get%scheduler(2), sched_%rr_%get_%interval(2), sched_%set%param(2), sched_%set%scheduler(2), sched_%yield(2), security, select(2), sendfile(2), send(2), sendmsg(2), sendto(2), set%domainname(2), set%fsgid(2), set%fsgid32, set%fsuid(2), set%fsuid32, set%gid(2), set%gid32, set%groups(2), set%groups32, set%hostname(2), set%itimer(2), set%pgid(2), set%priority(2), set%regid(2), set%regid32, set%resgid(2), set%resgid32, set%resuid(2), set%resuid32, set%reuid(2), set%reuid32, set%rlimit(2), set%sid(2), set%sockopt(2), set%timeofday(2), set%uid(2), set%uid32, setup(2), sgetmask(2), shutdown(2), sigaction(2), sigaltstack(2), signal(2), sigpending(2), sigprocmask(2), sigreturn(2), sigsuspend(2), socket(2), socketcall(2), socketpair(2), ssetmask(2), stat(2), stat64, 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), truncate64, ulimit, umask(2), umount(2), uname(2), unlink(2), uselib(2), ustat(2), utime(2), vfork(2), vhangup(2), vm86(2), vm86old, wait4(2), waitpid(2), write(2), writev(2).
Sur l'ensemble de ces appels-système, 9 d'entre-eux sont obsolètes, getrlimit, oldfstat, oldlstat, oldolduname, oldstat, olduname readdir, select et vm86old (voir obsolete(2)), et 15 ne sont pas implémentés, afs_syscall, break, ftime, getpmsg, gtty, idle, lock, mpx, phys, prof, profil, putpmsg, security, stty and ulimit (voir aussi unimplemented(2)). Toutefois ftime(3), profil(3) et ulimit(3) sont disponibles sous forme de fonctions de bibliothèque. L'entrée pour phys est utilisée pour umount depuis le 2.1.116, phys ne sera jamais implémenté. Les appels getpmsg et putpmsg sont pour les noyaux modifiés qui supportent les streams, et ne seront peut-être jamais dans le noyau standard. L'appel security servira dans le futur.
En général, le code implémentant l'appel-système ayant le numéro __NR_xxx dans le fichier /usr/include/asm/unistd.h se trouve dans la routine sys_xxx() du noyau. (La table de distribution pour la version i386 se trouve dans /usr/src/linux/arch/i386/kernel/entry.S.) Il y a néanmoins plusieurs exceptions, principalement lorsque des anciens appels-systèmes ont été remplacés par des nouveaux. Ces cas n'ont pas été traités de manière homogène. Sur les plates-formes avec une émulation de système propriétaire, comme parisc, sparc, sparc64 et alpha, il y a de nombreux appels supplémentaires ; mips64 contient aussi un jeu complet d'appels-système 32-bits. Voici des détails en vigueur pour Linux 2.4.17.
Les définitions __NR_oldstat et __NR_stat concernent les routines sys_stat() et sys_newstat(), et similairement fstat et lstat. De même, les définitions __NR_oldolduname, __NR_olduname et __NR_uname concernent les routines sys_olduname(), sys_uname() et sys_newuname(). Quoiqu'il en soit, __NR_stat et __NR_uname se sont toujours rapportés à la dernière version de l'appel-système, et les versions plus anciennes ne sont conservées que pour assurer une compatibilité ascendante.
Les choses diffèrent avec select et mmap. Ces appels nécessitent 5 paramètres ou plus, ce qui a posé des problèmes avec les méthodes classiques de passage de paramètres sur i386. Ainsi, alors que les autres architectures disposent de sys_select() et sys_mmap() correspondant à __NR_select et __NR_mmap, on trouve sur les i386 old_select() et old_mmap() à leur place. Ce sont des routines utilisant un pointeur sur un bloc de paramètres. De nos jours, passer 5 paramètres n'est plus un problème, et il existe donc un __NR__newselect (utilisé par la libc 6) correspondant directement à sys_select().
Deux autres numéros d'appels systèmes, __NR__llseek et __NR__sysctl possèdent un underscore supplémentaire absent dans sys_llseek() et sys_sysctl().
Egalement, il existe un __NR_readdir correspondant à old_readdir(), qui lira au plus une entrée de répertoire à la fois, et qui est remplacé par sys_getdents().
Sur de nombreuses plates-formers, y compris les i386, les appels des sockets sont multiplexés à travers socketcall() et les IPC Système V via ipc().
Sur les plates-formes récentes qui n'ont que des accès aux fichiers 64-bits et des UID 32-bits (ex. alpha, ia64, s390x) il n'y a pas d'appel *64 ou *32. Quand les appels *64 et *32 existent, les autres versions sont obsolètes.
Les appels chown et lchown ont été échangés dans le 2.1.81. Les appels *64 et *32 ont été ajoutés dans le noyau 2.4, comme les nouvelles versions de getrlimit et mmap, et les nouveaux appels pivot_root, mincore, madvise, security, gettid et readahead.
TRADUCTION
Christophe Blaess, 1996-2003.