syscalls

Autres langues

Langue: fr

Version: 7 janvier 2002 (mandriva - 01/05/08)

Section: 2 (Appels système)

NOM

liste - Liste des appels système

SYNOPSIS

Les appels système 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.

_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), getcwd(2), getdents(2), getdents64, getegid(2), getegid32, geteuid(2), geteuid32, getgid(2), getgid32, getgroups(2), getgroups32, getitimer(2), getpagesize(2), getpeername(2), getpmsg, getpgid(2), getpgrp(2), getpid(2), getppid(2), getpriority(2), getresgid(2), getresgid32, getresuid(2), getresuid32, getrlimit(2), getrusage(2), getsid(2), getsockname(2), getsockopt(2), gettid, gettimeofday(2), getuid(2), getuid32, gtty, idle, init_module(2), ioctl(2), ioperm(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_getparam(2), sched_getscheduler(2), sched_rr_get_interval(2), sched_setparam(2), sched_setscheduler(2), sched_yield(2), security, select(2), sendfile(2), send(2), sendmsg(2), sendto(2), setdomainname(2), setfsgid(2), setfsgid32, setfsuid(2), setfsuid32, setgid(2), setgid32, setgroups(2), setgroups32, sethostname(2), setitimer(2), setpgid(2), setpriority(2), setregid(2), setregid32, setresgid(2), setresgid32, setresuid(2), setresuid32, setreuid(2), setreuid32, setrlimit(2), setsid(2), setsockopt(2), settimeofday(2), setuid(2), setuid32, 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 et 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 d'anciens appels système 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 existe 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(2) et lstat(2). 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(2) et mmap(2). 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ème, __NR__llseek et __NR__sysctl possèdent un underscore supplémentaire absent dans sys_llseek() et sys_sysctl().

Également, 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-formes, y compris les i386, les appels des sockets sont multiplexés à travers socketcall(2) et les IPC Système V via ipc(2).

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

Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 12 décembre 1998 et révisée le 28 novembre 2007.

L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 2 syscalls ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.