SYSCALLS
Section: Manuel du programmeur Linux (2) Updated: 18 juillet 2003 Index
NOM
SYNOPSIS
DESCRIPTION
TRADUCTION
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),
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 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.
|