Provided by: manpages-fr-dev_4.28.0-2_all 

NOM
syscalls - Appels système de Linux
SYNOPSIS
Appels système de Linux.
DESCRIPTION
L'appel système est l'interface fondamentale entre une application et le noyau Linux.
Appels système et fonctions de bibliothèque
Les appels système ne sont en général pas appelés directement, mais à partir de fonctions enveloppe de la
glibc (ou d'une autre bibliothèque). Pour avoir des détails pour l'appel direct d'un appel système,
consultez intro(2). Souvent, mais pas toujours, le nom de la fonction enveloppe est le même que celui de
l'appel système à invoquer. Par exemple, la glibc contient une fonction chdir() qui invoque l'appel
système « chdir » sous-jacent.
Souvent, la fonction enveloppe de la glibc est très petite, ne faisant que très peu en plus de placer les
paramètres dans les bons registres avant d'appeler l'appel système puis de positionner errno comme il
faut une fois que l'appel système a rendu la main. (Ce sont les mêmes étapes qui sont effectuées par
syscall(2), qui peut être utilisé pour les appels système pour lesquels il n'y a pas de fonction
enveloppe de fournies.) Note : les appels système indiquent un échec en renvoyant un numéro d'erreur
négatif à l'appelant sur les architectures n'ayant pas de registre ou d'attribut d'erreur séparé comme
noté dans syscall(2) ; quand cela arrive, la fonction enveloppe prend l'opposé du numéro d'erreur (pour
le rendre positif), le copie dans errno et renvoie -1 à l'appelant de la fonction enveloppe.
Des fois, cependant, la fonction réalise certaines opérations avant d'invoquer l'appel système. Par
exemple, de nos jour il y a deux appels système truncate(2) et truncate64(2) (pour les raisons données
ci-dessous) et la fonction truncate() de la glibc vérifie quels appels système sont fournis par le noyau
et détermine lequel doit être utilisé.
Liste des appels système
Voici une liste des appels système Linux. Dans cette liste, la colonne Noyau indique la version du noyau
dans laquelle ils sont apparus, s'ils sont apparu dans la version 2.2 de Linux ou après. Remarquez les
points suivants :
- Si aucune version de noyau n'est indiquée, l'appel système est apparu dans Linux 1.0 ou auparavant.
- Quand un appel système est marqué « 1.2 », cela signifie que l'appel système est probablement apparu
dans une version 1.1.x du noyau Linux et est apparu la première fois dans un noyau stable dans la
version 1.2. (Le développement du noyau Linux 1.2 a débuté à partir d'une branche de Linux 1.0.6, au
travers de la série « non stable » des noyaux Linux 1.1.x.)
- Quand un appel système est marqué « 2.0 », cela signifie que l'appel système est probablement apparu
dans une version 1.3.x du noyau Linux et est apparu la première fois dans un noyau stable dans
Linux 2.0. (Le développement du noyau Linux 2.0 a débuté à partir d'une branche de Linux 1.2.x, aux
alentours de la branche 1.2.10, au travers de la série « non stable » des noyaux Linux 1.3.x.)
- Quand un appel système est marqué « 2.2 », cela signifie que l'appel système est probablement apparu
dans une version 2.1.x du noyau Linux et est apparu la première fois dans un noyau stable dans
Linux 2.2.0. (Le développement du noyau Linux 2.2 a débuté à partir d'une branche de Linux 2.0.21, au
travers de la série « non stable » des noyaux Linux 2.1.x.)
- Quand un appel système est marqué « 2.4 », cela signifie que l'appel système est probablement apparu
dans une version 2.3.x du noyau Linux et est apparu la première fois dans un noyau stable dans
Linux 2.4.0. (Le développement du noyau Linux 2.4 a débuté à partir d'une branche de Linux 2.2.8 au
travers de la série « non stable » des noyaux Linux 2.3.x.)
- Quand un appel système est marqué « 2.6 », cela signifie que l'appel système est probablement apparu
dans une version 2.5.x du noyau Linux et est apparu la première fois dans un noyau stable dans
Linux 2.6.0. (Le développement du noyau Linux 2.6 a débuté à partir d'une branche de Linux 2.4.15 au
travers de la série « non stable » des noyaux Linux 2.5.x.)
- À partir de Linux 2.6.0, le mode de développement a changé et de nouveaux appels système pouvaient
apparaître à chaque version de Linux 2.6.x. Dans ce cas, le numéro de version exact où l'appel système
est apparu est indiqué. Cette convention continue de s'appliquer à la série des noyaux Linux 3.x, qui
ont succédé au noyau Linux 2.6.39, à la série des noyaux Linux 4.x qui ont succédé au noyau
Linux 3.19, à la série des noyaux Linux 5.x qui ont succédé au noyau Linux 4.20 et à la série des
noyaux Linux 6.x qui ont succédé au noyau Linux 5.19.
- Dans certains cas, un appel système a été ajouté à un noyau de la série stable après l'embranchement
provenant de la série stable précédente, puis a été porté dans les séries stables précédentes du
noyau. Par exemple certains appels système apparus dans Linux 2.6.x ont été rétroportés dans les
publications Linux 2.4.x postérieures à Linux 2.4.15. Dans ce cas, les deux versions des deux séries
majeures du noyau dans lesquelles l'appel système est apparu sont mentionnées.
La liste des appels système qui sont disponibles dans la version 5.14 (ou dans certains cas, uniquement
pour certains noyaux plus anciens) est la suivante :
Appel système Noyau Notes
─────────────────────────────────────────────────────────────────────────────────
_llseek(2) 1.2
_newselect(2) 2.0
_sysctl(2) 2.0 Retiré dans 5.5
accept(2) 2.0 Voir les notes de socketcall(2)
accept4(2) 2.6.28
access(2) 1.0
acct(2) 1.0
add_key(2) 2.6.10
adjtimex(2) 1.0
alarm(2) 1.0
alloc_hugepages(2) 2.5.36 Retiré dans 2.5.44
arc_gettls(2) 3.9 ARC uniquement
arc_settls(2) 3.9 ARC uniquement
arc_usr_cmpxchg(2) 4.9 ARC uniquement
arch_prctl(2) 2.6 x86_64, x86 depuis 4.12
atomic_barrier(2) 2.6.34 m68k uniquement
atomic_cmpxchg_32(2) 2.6.34 m68k uniquement
bdflush(2) 1.2 Obsolète (ne fait rien) depuis 2.6
bind(2) 2.0 Voir les notes de socketcall(2)
bpf(2) 3.18
brk(2) 1.0
breakpoint(2) 2.2 OABI ARM uniquement, défini par le
préfixe __ARM_NR
cacheflush(2) 1.2 Pas dans x86
capget(2) 2.2
capset(2) 2.2
chdir(2) 1.0
chmod(2) 1.0
chown(2) 2.2 Consulter chown(2) pour le détail des
versions
chown32(2) 2.4
chroot(2) 1.0
clock_adjtime(2) 2.6.39
clock_getres(2) 2.6
clock_gettime(2) 2.6
clock_nanosleep(2) 2.6
clock_settime(2) 2.6
clone2(2) 2.4 IA-64 uniquement
clone(2) 1.0
clone3(2) 5.3
close(2) 1.0
close_range(2) 5.9
connect(2) 2.0 Voir les notes de socketcall(2)
copy_file_range(2) 4.5
creat(2) 1.0
create_module(2) 1.0 Retiré dans 2.6
delete_module(2) 1.0
dup(2) 1.0
dup2(2) 1.0
dup3(2) 2.6.27
epoll_create(2) 2.6
epoll_create(2) 2.6.27
epoll_ctl(2) 2.6
epoll_pwait(2) 2.6.19
epoll_pwait2(2) 5.11
epoll_wait(2) 2.6
eventfd(2) 2.6.22
eventfd2(2) 2.6.27
execv(2) 2.0 SPARC/SPARC64 uniquement, pour
compatibilité avec SunOS
execve(2) 1.0
execveat(2) 3.19
exit(2) 1.0
exit_group(2) 2.6
faccessat(2) 2.6.16
faccessat2(2) 5.8
fadvise64(2) 2.6
fadvise64_64(2) 2.6
fallocate(2) 2.6.23
fanotify_init(2) 2.6.37
fanotify_mark(2) 2.6.37
fchdir(3) 1.0
fchmod(2) 1.0
fchmodat(2) 2.6.16
fchown(2) 1.0
fchown32(2) 2.4
fchownat(2) 2.6.16
fcntl(2) 1.0
fcntl64(2) 2.4
fdatasync(2) 2.0
fgetxattr(2) 2.6 ; 2.4.18
finit_module(2) 3.8
flistxattr(2) 2.6 ; 2.4.18
flock(2) 2.0
fork(2) 1.0
free_hugepages(2) 2.5.36 Retiré dans 2.5.44
fremovexattr(2) 2.6 ; 2.4.18
fsconfig(2) 5.2
fsetxattr(2) 2.6 ; 2.4.18
fsmount(2) 5.2
fsopen(2) 5.2
fspick(2) 5.2
fstat(2) 1.0
fstat64(2) 2.4
fstatat64(2) 2.6.16
fstatfs(2) 1.0
fstatfs64(2) 2.6
fsync(2) 1.0
ftruncate(2) 1.0
ftruncate64(2) 2.4
futex(2) 2.6
futimesat(2) 2.6.16
get_kernel_syms(2) 1.0 Retiré dans 2.6
get_mempolicy(2) 2.6.6
get_robust_list(2) 2.6.17
get_thread_area(2) 2.6
get_tls(2) 4.15 OABI ARM uniquement, a le préfixe
__ARM_NR
getcpu(2) 2.6.19
getcwd(2) 2.2
getdents(2) 2.0
getdents64(2) 2.4
getdomainname(2) 2.2 SPARC, SPARC64 ; disponible sous le
nom osf_getdomainname(2) sur Alpha
depuis Linux 2.0
getdtablesize(2) 2.0 SPARC (retiré dans 2.6.26),
disponible sur Alpha sous le nom
osf_getdtablesize(2)
getegid(2) 1.0
getegid32(2) 2.4
geteuid(2) 1.0
geteuid32(2) 2.4
getgid(2) 1.0
getgid32(2) 2.4
getgroups(2) 1.0
getgroups32(2) 2.4
gethostname(2) 2.0 Alpha, disponible sur SPARC jusqu'à
Linux 2.6.26
getitimer(2) 1.0
getpeername(2) 2.0 Voir les notes de socketcall(2)
getpagesize(2) 2.0 Alpha, SPARC/SPARC64 uniquement
getpgid(2) 1.0
getpgrp(2) 1.0
getpid(2) 1.0
getppid(2) 1.0
getpriority(2) 1.0
getrandom(2) 3.17
getresgid(2) 2.2
getresgid32(2) 2.4
getresuid(2) 2.2
getresuid32(2) 2.4
getrlimit(2) 1.0
getrusage(2) 1.0
getsid(2) 2.0
getsockname(2) 2.0 Voir les notes de socketcall(2)
getsockopt(2) 2.0 Voir les notes de socketcall(2)
gettid(2) 2.4.11
gettimeofday(2) 1.0
getuid(2) 1.0
getuid32(2) 2.4
getunwind(2) 2.4.8 IA-64 uniquement ; obsolète
getxattr(2) 2.6 ; 2.4.18
getxgid(2) 2.0 Alpha uniquement ; voir NOTES
getxpid(2) 2.0 Alpha uniquement ; voir NOTES
getxuid(2) 2.0 Alpha uniquement ; voir NOTES
init_module(2) 1.0
inotify_add_watch(2) 2.6.13
inotify_init(2) 2.6.13
inotify_init1(2) 2.6.27
inotify_rm_watch(2) 2.6.13
io_cancel(2) 2.6
io_destroy(2) 2.6
io_getevents(2) 2.6
io_pgetevents(2) 4.18
io_setup(2) 2.6
io_submit(2) 2.6
io_uring_enter(2) 5.1
io_uring_register(2) 5.1
io_uring_setup(2) 5.1
ioctl(2) 1.0
ioperm(2) 1.0
iopl(2) 1.0
ioprio_get(2) 2.6.13
ioprio_set(2) 2.6.13
ipc(2) 1.0
kcmp(2) 3.5
kern_features(2) 3.7 SPARC64 uniquement
kexec_file_load(2) 3.17
kexec_load(2) 2.6.13
keyctl(2) 2.6.10
kill(2) 1.0
landlock_add_rule(2) 5.13
landlock_create_ruleset(2) 5.13
landlock_restrict_self(2 5.13
lchown(2) 1.0 Consulter chown(2) pour le détail des
versions
lchown32(2) 2.4
lgetxattr(2) 2.6 ; 2.4.18
link(2) 1.0
linkat(2) 2.6.16
listen(2) 2.0 Voir les notes de socketcall(2)
listxattr(2) 2.6 ; 2.4.18
llistxattr(2) 2.6 ; 2.4.18
lookup_dcookie(2) 2.6
lremovexattr(2) 2.6 ; 2.4.18
lseek(2) 1.0
lsetxattr(2) 2.6 ; 2.4.18
lstat(2) 1.0
lstat64(2) 2.4
madvise(2) 2.4
mbind(2) 2.6.6
memory_ordering(2) 2.2 SPARC64 uniquement
membarrier(2) 3.17
memfd_create(2) 3.17
memfd_secret(2) 5.14
migrate_pages(2) 2.6.16
mincore(2) 2.4
mkdir(2) 1.0
mkdirat(2) 2.6.16
mknod(2) 1.0
mknodat(2) 2.6.16
mlock(2) 2.0
mlock2(2) 4.4
mlockall(2) 2.0
mmap(2) 1.0
mmap2(2) 2.4
modify_ldt(2) 1.0
mount(2) 1.0
move_mount(2) 5.2
move_pages(2) 2.6.18
mprotect(2) 1.0
mq_getsetattr(2) 2.6.6
mq_notify(2) 2.6.6
mq_open(2) 2.6.6
mq_timedreceive(2) 2.6.6
mq_timedsend(2) 2.6.6
mq_unlink(2) 2.6.6
mremap(2) 2.0
msgctl(2) 2.0 Voir notes de ipc(2)
msgget(2) 2.0 Voir notes de ipc(2)
msgrcv(2) 2.0 Voir notes de ipc(2)
msgsnd(2) 2.0 Voir notes de ipc(2)
msync(2) 2.0
munlock(2) 2.0
munlockall(2) 2.0
munmap(2) 1.0
name_to_handle_at(2) 2.6.39
nanosleep(2) 2.0
newfstatat(2) 2.6.16 Voir stat(2)
nfsservctl(2) 2.2 Retiré dans 3.1
nice(2) 1.0
old_adjtimex(2) 2.0 Alpha uniquement ; voir NOTES
old_getrlimit(2) 2.4 Variante ancienne de getrlimit(2) qui
utilisait une valeur différente pour
RLIM_INFINITY
oldfstat(2) 1.0
oldlstat(2) 1.0
oldolduname(2) 1.0
oldstat(2) 1.0
oldumount(2) 2.4.116 Nom de l'ancien appel système
umount(2) sur Alpha
olduname(2) 1.0
open(2) 1.0
open_by_handle_at(2) 2.6.39
open_tree(2) 5.2
openat(2) 2.6.16
openat2(2) 5.6
or1k_atomic(2) 3.1 OpenRISC 1000 uniquement
pause(2) 1.0
pciconfig_iobase(2) 2.2.15 ; 2.4 Pas dans x86
pciconfig_read(2) 2.0.26 ; 2.2 Pas dans x86
pciconfig_write(2) 2.0.26 ; 2.2 Pas dans x86
perf_event_open(2) 2.6.31 Ancien perf_counter_open() dans
2.6.31 ; renommé dans 2.6.32
personality(2) 1.2
perfctr(2) 2.2 SPARC uniquement ; retiré depuis
2.6.34
perfmonctl(2) 2.4 IA-64 uniquement ; retiré depuis 5.10
pidfd_getfd(2) 5.6
pidfd_send_signal(2) 5.1
pidfd_open(2) 5.3
pipe(2) 1.0
pipe2(2) 2.6.27
pivot_root(2) 2.4
pkey_alloc(2) 4.8
pkey_free(2) 4.8
pkey_mprotect(2) 4.8
poll(2) 2.0.36 ; 2.2
ppoll(2) 2.6.16
prctl(2) 2.2
pread64(2) Ajouté comme « pread » dans 2.2 ;
renommé « pread64 » depuis 2.6
preadv(2) 2.6.30
preadv2(2) 4.6
prlimit64(2) 2.6.36
process_madvise(2) 5.10
process_vm_readv(2) 3.2
process_vm_writev(2) 3.2
pselect6(2) 2.6.16
ptrace(2) 1.0
pwrite64(2) Ajouté comme « pwrite » dans 2.2 ;
renommé « pwrite64 » depuis 2.6
pwritev(2) 2.6.30
pwritev2(2) 4.6
query_module(2) 2.2 Retiré dans 2.6
quotactl(2) 1.0
quotactl_fd(2) 5.14
read(2) 1.0
readahead(2) 2.4.13
readdir(2) 1.0
readlink(2) 1.0
readlinkat(2) 2.6.16
readv(2) 2.0
reboot(2) 1.0
recv(2) 2.0 Voir les notes de socketcall(2)
recvfrom(2) 2.0 Voir les notes de socketcall(2)
recvmsg(2) 2.0 Voir les notes de socketcall(2)
recvmmsg(2) 2.6.33
remap_file_pages(2) 2.6 Obsolète depuis 3.16
removexattr(2) 2.6 ; 2.4.18
rename(2) 1.0
renameat(2) 2.6.16
renameat2(2) 3.15
request_key(2) 2.6.10
restart_syscall(2) 2.6
riscv_flush_icache(2) 4.15 RISC-V uniquement
rmdir(2) 1.0
rseq(2) 4.18
rt_sigaction(2) 2.2
rt_sigpending(2) 2.2
rt_sigprocmask(2) 2.2
rt_sigqueueinfo(2) 2.2
rt_sigreturn(2) 2.2
rt_sigsuspend(2) 2.2
rt_sigtimedwait(2) 2.2
rt_tgsigqueueinfo(2) 2.6.31
rtas(2) 2.6.2 PowerPC/PowerPC64 uniquement
s390_runtime_instr(2) 3.7 s390 uniquement
s390_pci_mmio_read(2) 3.19 s390 uniquement
s390_pci_mmio_write(2) 3.19 s390 uniquement
s390_sthyi(2) 4.15 s390 uniquement
s390_guarded_storage(2) 4.12 s390 uniquement
sched_get_affinity(2) 2.6 Nom de sched_getaffinity(2) sur SPARC
et SPARC64
sched_get_priority_max(2) 2.0
sched_get_priority_min(2) 2.0
sched_getaffinity(2) 2.6
sched_getattr(2) 3.14
sched_getparam(2) 2.0
sched_getscheduler(2) 2.0
sched_rr_get_interval(2) 2.0
sched_set_affinity(2) 2.6 Nom de sched_setaffinity(2) sur SPARC
et SPARC64
sched_setaffinity(2) 2.6
sched_setattr(2) 3.14
sched_setparam(2) 2.0
sched_setscheduler(2) 2.0
sched_yield(2) 2.0
seccomp(2) 3.17
select(2) 1.0
semctl(2) 2.0 Voir notes de ipc(2)
semget(2) 2.0 Voir notes de ipc(2)
semop(2) 2.0 Voir notes de ipc(2)
semtimedop(2) 2.6 ; 2.4.22
send(2) 2.0 Voir les notes de socketcall(2)
sendfile(2) 2.2
sendfile64(2) 2.6 ; 2.4.19
sendmmsg(2) 3.0
sendmsg(2) 2.0 Voir les notes de socketcall(2)
sendto(2) 2.0 Voir les notes de socketcall(2)
set_mempolicy(2) 2.6.6
set_robust_list(2) 2.6.17
set_thread_area(2) 2.6
set_tid_address(2) 2.6
set_tls(2) 2.6.11 OABI/EABI ARM uniquement (la
constante a le préfixe __ARM_NR)
setdomainname(2) 1.0
setfsgid(2) 1.2
setfsgid32(2) 2.4
setfsuid(2) 1.2
setfsuid32(2) 2.4
setgid(2) 1.0
setgid32(2) 2.4
setgroups(2) 1.0
setgroups32(2) 2.4
sethae(2) 2.0 Alpha uniquement ; voir NOTES
sethostname(2) 1.0
setitimer(2) 1.0
setns(2) 3.0
setpgid(2) 1.0
getpgrp(2) 2.0 Nom alternatif pour setpgid(2) sur
Alpha
setpriority(2) 1.0
setregid(2) 1.0
setregid32(2) 2.4
setresgid(2) 2.2
setresgid32(2) 2.4
setresuid(2) 2.2
setresuid32(2) 2.4
setreuid(2) 1.0
setreuid32(2) 2.4
setrlimit(2) 1.0
setsid(2) 1.0
setsockopt(2) 2.0 Voir les notes de socketcall(2)
settimeofday(2) 1.0
setuid(2) 1.0
setuid32(2) 2.4
setup(2) 1.0 Retiré dans 2.2
setxattr(2) 2.6 ; 2.4.18
sgetmask(2) 1.0
shmat(2) 2.0 Voir notes de ipc(2)
shmctl(2) 2.0 Voir notes de ipc(2)
shmdt(2) 2.0 Voir notes de ipc(2)
shmget(2) 2.0 Voir notes de ipc(2)
shutdown(2) 2.0 Voir les notes de socketcall(2)
sigaction(2) 1.0
sigaltstack(2) 2.2
signal(2) 1.0
signalfd(2) 2.6.22
signalfd4(2) 2.6.27
sigpending(2) 1.0
sigprocmask(2) 1.0
sigreturn(2) 1.0
sigsuspend(2) 1.0
socket(2) 2.0 Voir les notes de socketcall(2)
socketcall(2) 1.0
socketpair(2) 2.0 Voir les notes de socketcall(2)
spill(2) 2.6.13 Xtensa uniquement
splice(2) 2.6.17
spu_create(2) 2.6.16 PowerPC/PowerPC64 uniquement
spu_run(2) 2.6.16 PowerPC/PowerPC64 uniquement
ssetmask(2) 1.0
stat(2) 1.0
stat64(2) 2.4
statfs(2) 1.0
statfs64(2) 2.6
statx(2) 4.11
stime(2) 1.0
subpage_prot(2) 2.6.25 PowerPC/PowerPC64 uniquement
swapcontext(2) 2.6.3 PowerPC/PowerPC64 uniquement
switch_endian(2) 4.1 PowerPC64 uniquement
swapoff(2) 1.0
swapon(2) 1.0
symlink(2) 1.0
symlinkat(2) 2.6.16
sync(2) 1.0
sync_file_range(2) 2.6.17
sync_file_range2(2) 2.6.22
syncfs(2) 2.6.39
sys_debug_setcontext(2) 2.6.11 PowerPC uniquement
syscall(2) 1.0 Encore disponible sur OABI ARM et O32
ABI MIPS
sysfs(2) 1.2
sysinfo(2) 1.0
syslog(2) 1.0
sysmips(2) 2.6.0 MIPS uniquement
tee(2) 2.6.17
tgkill(2) 2.6
time(2) 1.0
timer_create(2) 2.6
timer_delete(2) 2.6
timer_getoverrun(2) 2.6
timer_gettime(2) 2.6
timer_settime(2) 2.6
timerfd_create(2) 2.6.25
timerfd_gettime(2) 2.6.25
timerfr_settime(2) 2.6.25
times(2) 1.0
tkill(2) 2.6 ; 2.4.22
truncate(2) 1.0
truncate64(2) 2.4
ugetrlimit(2) 2.4
umask(2) 1.0
umount(2) 1.0
umount2(2) 2.2
uname(2) 1.0
unlink(2) 1.0
unlinkat(2) 2.6.16
unshare(2) 2.6.16
uselib(2) 1.0
ustat(2) 1.0
userfaultfd(2) 4.3
usr26(2) 2.4.8.1 OABI ARM uniquement
usr32(2) 2.4.8.1 OABI ARM uniquement
utime(2) 1.0
utimensat(2) 2.6.22
utimes(2) 2.2
utrap_install(2) 2.2 SPARC64 uniquement
vfork(2) 2.2
vhangup(2) 1.0
vm86old(2) 1.0 Précédemment « vm86 », renommé dans
2.0.28/2.2
vm86(2) 2.0.28 ; 2.2
vmsplice(2) 2.6.17
wait4(2) 1.0
waitpid(2) 2.6.10
waitpid(2) 1.0
write(2) 1.0
writev(2) 2.0
xtensa(2) 2.6.13 Xtensa uniquement
Sur de nombreuses plates-formes, y compris les x86-32, les appels de socket sont multiplexés (par des
fonctions de la glibc) à travers socketcall(2) et de même les IPC System V à l’aide d’ipc(2).
Même si des entrées ont été réservées dans la table des appels système, les appels système suivants ne
sont pas implémentés dans le noyaux standard : afs_syscall(2), break(2), ftime(2), getpmsg(2), gtty(2),
idle(2), lock(2), madvise1(2), mpx(2), phys(2), prof(2), profil(2), putpmsg(2), security(2), stty(2),
tuxcall(2), ulimit(2) et vserver(2) (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(2) est utilisée
pour umount(2) depuis Linux 2.1.116, phys(2) ne sera jamais implémenté. Les appels getpmsg(2) et
putpmsg(2) sont pour les noyaux modifiés qui supportent les FLUX et ne seront peut-être jamais dans le
noyau standard.
set_zone_reclaim(2) a existé brièvement : ajouté dans Linux 2.6.13, et retiré dans Linux 2.6.16. Cet
appel système n'a jamais été disponible dans l'espace utilisateur.
Appels système sur des portages supprimés
Certains appels système ont existé uniquement dans des architectures Linux qui ont été depuis supprimées
du noyau :
AVR32 (portage retiré dans Linux 4.12)
- pread(2)
- pwrite(2)
Blackfin (portage retiré dans Linux 4.17)
- bfin_spinlock(2) (ajouté dans Linux 2.6.22)
- dma_memcpy(2) (ajouté dans Linux 2.6.22)
- pread(2) (ajouté dans Linux 2.6.22)
- pwrite(2) (ajouté dans Linux 2.6.22)
- sram_alloc(2) (ajouté dans Linux 2.6.22)
- sram_free(2) (ajouté dans Linux 2.6.22)
Metag (portage retiré dans Linux 4.17)
- metag_get_tls(2) (ajouté dans Linux 3.9)
- metag_set_fpu_flags(2) (ajouté dans Linux 3.9)
- metag_set_tls(2) (ajouté dans Linux 3.9)
- metag_setglobalbit(2) (ajouté dans Linux 3.9)
Tile (portage retiré dans Linux 4.17)
- cmpxchg_badaddr(2) (ajouté dans Linux 2.6.36)
NOTES
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 source du noyau Linux. 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 plate-formes avec une émulation de système
propriétaire, comme sparc, sparc64 et alpha, il existe de nombreux appels supplémentaires ;mips64
contient aussi un jeu complet d'appels système 32 bits.
Avec le temps, des changements dans les interfaces de certains appels système ont été nécessaires. Une
raison pour ces changements a été le besoin d'augmenter la taille des structures ou des valeurs scalaires
passées aux appels système. À cause de ces changements, certaines architectures (particulièrement des
vieilles architectures 32 bits comme i386) ont maintenant divers groupes d'appels système apparentés (par
exemple truncate(2) et truncate64(2)) qui remplissent des tâches similaires mais qui varient sur des
détails comme la taille de leurs paramètres. (Comme noté précédemment, les applications ne sont
généralement pas conscientes de cela : les fonctions enveloppe de la glibc remplissent certaines tâches
pour s'assurer que c'est le bon appel système qui est appelé et la compatibilité de l'ABI est préservée
avec les vieux binaires.) Voici des exemples d'appels système qui existent dans plusieurs versions :
- À ce jour, il y a trois versions de stat(2) : sys_stat() (entrée __NR_oldstat), sys_newstat() (entrée
__NR_stat) et sys_stat64() (entrée __NR_stat64), la dernière étant celle utilisée actuellement. La
même histoire s'applique à lstat(2) et fstat(2).
- De même, les définitions __NR_oldolduname, __NR_olduname et __NR_uname concernent les routines
sys_olduname(), sys_uname() et sys_newuname().
- Dans Linux 2.0, une nouvelle version de vm86(2) est apparue, l'ancienne et la nouvelle routine du
noyau étant appelées sys_vm86old() et sys_vm86().
- Dans Linux 2.4, une nouvelle version de getrlimit(2) est apparue, l'ancienne et la nouvelle routine du
noyau étant appelées sys_old_getrlimit() (entrée __NR_getrlimit) et sys_getrlimit() (entrée
__NR_ugetrlimit).
- Linux 2.4 a augmenté la taille des identifiants d'utilisateur et de groupe de 16 bits à 32 bits. Pour
permettre ce changement, un jeu d'appels système ont été ajoutés (par exemple, chown32(2),
getuid32(2), getgroups32(2), setresuid32(2)), surchargeant les précédents appels système du même nom
n'ayant pas le suffixe « 32 ».
- Linux 2.4 a ajouté la gestion des gros fichiers pour les applications sur architecture 32 bits
(c'est-à-dire la gestion des fichiers dont la taille et les décalages dans le fichier ne peuvent pas
être représentés sur 32 bits). Pour gérer ce changement, des appels système, qui utilisent des
décalages et des tailles de fichiers, ont dû être remplacés. Ainsi, les appels système suivants ont
été ajoutés : fcntl64(2), getdents64(2), stat64(2), statfs64(2), truncate64(2) et leurs appels système
analogues qui fonctionnent avec des descripteurs de fichier ou des liens symboliques. Ces appels
système remplacent les anciens appels système qui, sauf pour les appels « stat », ont le même nom sans
le suffixe « 64 ».
Sur les plates-formes récentes qui n'ont que des accès aux fichiers 64 bits et des UID ou GID 32 bits
(par exemple alpha, ia64, s390x, x86-64), il y a une seule version des appels système pour l'accès aux
fichiers, UID ou GID. Sur les plates-formes (habituellement des plates-formes 32 bits) où les les
appels *64 et *32 existent, les autres versions sont obsolètes.
- Les appels rt_sig* ont été ajoutés dans Linux 2.2 pour gérer l'ajout des signaux temps réel (consultez
signal(7)). Ces appels système remplacent les appels précédents de mêmes noms sans le préfixe « rt_ ».
- Les appels système select(2) et mmap(2) utilisent cinq 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() (des routines utilisant un pointeur vers un bloc de
paramètres) à leur place. De nos jours, passer cinq paramètres n'est plus un problème, et il existe
donc un __NR__newselect correspondant directement à sys_select() ; il en est de même pour __NR_mmap2.
s390x est la seule architecture 64 bits qui a old_mmap().
Détails spécifiques à l'architecture : Alpha
getxgid(2)
renvoie une paire de GID et de GID effectif au moyen des registres r0 et r20 ; il est fourni à la
place de getgid(2) et getegid(2).
getxpid(2)
renvoie une paire de PID et de PID parent au moyen des registres r0 et r20 ; il est fourni à la
place de getpid(2) et getppid(2).
old_adjtimex(2)
est une variante de adjtimex(2) qui utilise struct timeval32, pour une compatibilité avec OSF/1.
getxuid(2)
renvoie une paire de GID et de GID effectif au moyen des registres r0 et r20 ; il est fourni à la
place de getuid(2) et geteuid(2).
sethae(2)
est utilisé pour configurer le registre Host Address Extension sur les systèmes Alpha bon marché
afin d'accéder à l'espace d'adresses au-delà des 27 premiers bits.
VOIR AUSSI
ausyscall(1), intro(2), syscall(2), unimplemented(2), errno(3), libc(7), vdso(7)
TRADUCTION
La traduction française de cette page de manuel a été créée par Christophe Blaess
<https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud
<tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard
<fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau
<jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François
<nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard
<simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot
<david@tilapin.org> et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>
Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License
version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à
debian-l10n-french@lists.debian.org.
Pages du manuel de Linux 6.9.1 2 mai 2024 syscalls(2)