syscalls(2) System Calls Manual syscalls(2)
NOM
syscalls - Appels systeme de Linux
SYNOPSIS
Appels systeme de Linux.
DESCRIPTION
L'appel systeme est l'interface fondamentale entre une application et
le noyau Linux.
Appels systeme et fonctions de bibliotheque
Les appels systeme ne sont en general pas appeles directement, mais a
partir de fonctions enveloppe de la glibc (ou d'une autre
bibliotheque). Pour avoir des details pour l'appel direct d'un appel
systeme, consultez intro(2). Souvent, mais pas toujours, le nom de la
fonction enveloppe est le meme que celui de l'appel systeme a invoquer.
Par exemple, la glibc contient une fonction chdir() qui invoque l'appel
systeme << chdir >> sous-jacent.
Souvent, la fonction enveloppe de la glibc est tres petite, ne faisant
que tres peu en plus de placer les parametres dans les bons registres
avant d'appeler l'appel systeme puis de positionner errno comme il faut
une fois que l'appel systeme a rendu la main. (Ce sont les memes etapes
qui sont effectuees par syscall(2), qui peut etre utilise pour les
appels systeme pour lesquels il n'y a pas de fonction enveloppe de
fournies.) Note : les appels systeme indiquent un echec en renvoyant un
numero d'erreur negatif a l'appelant sur les architectures n'ayant pas
de registre ou d'attribut d'erreur separe comme note dans syscall(2) ;
quand cela arrive, la fonction enveloppe prend l'oppose du numero
d'erreur (pour le rendre positif), le copie dans errno et renvoie -1 a
l'appelant de la fonction enveloppe.
Des fois, cependant, la fonction realise certaines operations avant
d'invoquer l'appel systeme. Par exemple, de nos jour il y a deux appels
systeme truncate(2) et truncate64(2) (pour les raisons donnees
ci-dessous) et la fonction truncate() de la glibc verifie quels appels
systeme sont fournis par le noyau et determine lequel doit etre
utilise.
Liste des appels systeme
Voici une liste des appels systeme 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 apres. Remarquez les points
suivants :
- Si aucune version de noyau n'est indiquee, l'appel systeme est
apparu dans Linux 1.0 ou auparavant.
- Quand un appel systeme est marque << 1.2 >>, cela signifie que
l'appel systeme est probablement apparu dans une version 1.1.x du
noyau Linux et est apparu la premiere fois dans un noyau stable dans
la version 1.2. (Le developpement du noyau Linux 1.2 a debute a
partir d'une branche de Linux 1.0.6, au travers de la serie << non
stable >> des noyaux Linux 1.1.x.)
- Quand un appel systeme est marque << 2.0 >>, cela signifie que
l'appel systeme est probablement apparu dans une version 1.3.x du
noyau Linux et est apparu la premiere fois dans un noyau stable dans
Linux 2.0. (Le developpement du noyau Linux 2.0 a debute a partir
d'une branche de Linux 1.2.x, aux alentours de la branche 1.2.10, au
travers de la serie << non stable >> des noyaux Linux 1.3.x.)
- Quand un appel systeme est marque << 2.2 >>, cela signifie que
l'appel systeme est probablement apparu dans une version 2.1.x du
noyau Linux et est apparu la premiere fois dans un noyau stable dans
Linux 2.2.0. (Le developpement du noyau Linux 2.2 a debute a partir
d'une branche de Linux 2.0.21, au travers de la serie << non
stable >> des noyaux Linux 2.1.x.)
- Quand un appel systeme est marque << 2.4 >>, cela signifie que
l'appel systeme est probablement apparu dans une version 2.3.x du
noyau Linux et est apparu la premiere fois dans un noyau stable dans
Linux 2.4.0. (Le developpement du noyau Linux 2.4 a debute a partir
d'une branche de Linux 2.2.8 au travers de la serie << non stable >>
des noyaux Linux 2.3.x.)
- Quand un appel systeme est marque << 2.6 >>, cela signifie que
l'appel systeme est probablement apparu dans une version 2.5.x du
noyau Linux et est apparu la premiere fois dans un noyau stable dans
Linux 2.6.0. (Le developpement du noyau Linux 2.6 a debute a partir
d'une branche de Linux 2.4.15 au travers de la serie << non
stable >> des noyaux Linux 2.5.x.)
- A partir de Linux 2.6.0, le mode de developpement a change et de
nouveaux appels systeme pouvaient apparaitre a chaque version de
Linux 2.6.x. Dans ce cas, le numero de version exact ou l'appel
systeme est apparu est indique. Cette convention continue de
s'appliquer a la serie des noyaux Linux 3.x, qui ont succede au
noyau Linux 2.6.39, a la serie des noyaux Linux 4.x qui ont succede
au noyau Linux 3.19, a la serie des noyaux Linux 5.x qui ont succede
au noyau Linux 4.20 et a la serie des noyaux Linux 6.x qui ont
succede au noyau Linux 5.19.
- Dans certains cas, un appel systeme a ete ajoute a un noyau de la
serie stable apres l'embranchement provenant de la serie stable
precedente, puis a ete porte dans les series stables precedentes du
noyau. Par exemple certains appels systeme apparus dans Linux 2.6.x
ont ete retroportes dans les publications Linux 2.4.x posterieures a
Linux 2.4.15. Dans ce cas, les deux versions des deux series
majeures du noyau dans lesquelles l'appel systeme est apparu sont
mentionnees.
La liste des appels systeme qui sont disponibles dans la version 5.14
(ou dans certains cas, uniquement pour certains noyaux plus anciens)
est la suivante :
Appel systeme Noyau Notes
-----------------------------------------------------------------------------------
_llseek(2) 1.2
_newselect(2) 2.0
_sysctl(2) 2.0 Retire 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 Retire 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 Obsolete (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, defini par le
prefixe __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 detail 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 Retire 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
compatibilite 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 Retire 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 Retire 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 prefixe
__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 (retire 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'a
Linux 2.6.26
getitimer(2) 1.0
getpeername(2) 2.0 Voir les notes de socketcall(2)
getpagesize(2) 2.0 Pas dans x86
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 ; obsolete
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 detail 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 Retire 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 differente 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 systeme 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
; renomme dans 2.6.32
personality(2) 1.2
perfctr(2) 2.2 SPARC uniquement ; retire depuis 2.6.34
perfmonctl(2) 2.4 IA-64 uniquement ; retire 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) Ajoute comme << pread >> dans 2.2 ;
renomme << 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) Ajoute comme << pwrite >> dans 2.2 ;
renomme << pwrite64 >> depuis 2.6
pwritev(2) 2.6.30
pwritev2(2) 4.6
query_module(2) 2.2 Retire 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 Obsolete depuis 3.16
removexattr(2) 2.6 ; 2.4.18
rename(2) 1.0
renameat2(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 prefixe __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 Retire 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 Precedemment << vm86 >>, renomme 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 multiplexes (par des fonctions de la glibc) a travers
socketcall(2) et de meme les IPC System V a l'aide d'ipc(2).
Meme si des entrees ont ete reservees dans la table des appels systeme,
les appels systeme suivants ne sont pas implementes 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 bibliotheque.
L'entree pour phys(2) est utilisee pour umount(2) depuis Linux 2.1.116,
phys(2) ne sera jamais implemente. Les appels getpmsg(2) et putpmsg(2)
sont pour les noyaux modifies qui supportent les FLUX et ne seront
peut-etre jamais dans le noyau standard.
set_zone_reclaim(2) a existe brievement : ajoute dans Linux 2.6.13, et
retire dans Linux 2.6.16. Cet appel systeme n'a jamais ete disponible
dans l'espace utilisateur.
Appels systeme sur des portages supprimes
Certains appels systeme ont existe uniquement dans des architectures
Linux qui ont ete depuis supprimees du noyau :
AVR32 (portage retire dans Linux 4.12)
- pread(2)
- pwrite(2)
Blackfin (portage retire dans Linux 4.17)
- bfin_spinlock(2) (ajoute dans Linux 2.6.22)
- dma_memcpy(2) (ajoute dans Linux 2.6.22)
- pread(2) (ajoute dans Linux 2.6.22)
- pwrite(2) (ajoute dans Linux 2.6.22)
- sram_alloc(2) (ajoute dans Linux 2.6.22)
- sram_free(2) (ajoute dans Linux 2.6.22)
Metag (portage retire dans Linux 4.17)
- metag_get_tls(2) (ajoute dans Linux 3.9)
- metag_set_fpu_flags(2) (ajoute dans Linux 3.9)
- metag_set_tls(2) (ajoute dans Linux 3.9)
- metag_setglobalbit(2) (ajoute dans Linux 3.9)
Tile (portage retire dans Linux 4.17)
- cmpxchg_badaddr(2) (ajoute dans Linux 2.6.36)
NOTES
En general, le code implementant l'appel systeme ayant le numero
__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 neanmoins plusieurs
exceptions, principalement lorsque d'anciens appels systeme ont ete
remplaces par des nouveaux. Ces cas n'ont pas ete traites de maniere
homogene. Sur les plate-formes avec une emulation de systeme
proprietaire, comme sparc, sparc64 et alpha, il existe de nombreux
appels supplementaires ;mips64 contient aussi un jeu complet d'appels
systeme 32 bits.
Avec le temps, des changements dans les interfaces de certains appels
systeme ont ete necessaires. Une raison pour ces changements a ete le
besoin d'augmenter la taille des structures ou des valeurs scalaires
passees aux appels systeme. A cause de ces changements, certaines
architectures (particulierement des vieilles architectures 32 bits
comme i386) ont maintenant divers groupes d'appels systeme apparentes
(par exemple truncate(2) et truncate64(2)) qui remplissent des taches
similaires mais qui varient sur des details comme la taille de leurs
parametres. (Comme note precedemment, les applications ne sont
generalement pas conscientes de cela : les fonctions enveloppe de la
glibc remplissent certaines taches pour s'assurer que c'est le bon
appel systeme qui est appele et la compatibilite de l'ABI est preservee
avec les vieux binaires.) Voici des exemples d'appels systeme qui
existent dans plusieurs versions :
- A ce jour, il y a trois versions de stat(2) : sys_stat() (entree
__NR_oldstat), sys_newstat() (entree __NR_stat) et sys_stat64()
(entree __NR_stat64), la derniere etant celle utilisee actuellement.
La meme histoire s'applique a lstat(2) et fstat(2).
- De meme, les definitions __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 etant appelees
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 etant appelees
sys_old_getrlimit() (entree __NR_getrlimit) et sys_getrlimit()
(entree __NR_ugetrlimit).
- Linux 2.4 a augmente la taille des identifiants d'utilisateur et de
groupe de 16 bits a 32 bits. Pour permettre ce changement, un jeu
d'appels systeme ont ete ajoutes (par exemple, chown32(2),
getuid32(2), getgroups32(2), setresuid32(2)), surchargeant les
precedents appels systeme du meme nom n'ayant pas le suffixe
<< 32 >>.
- Linux 2.4 a ajoute la gestion des gros fichiers pour les
applications sur architecture 32 bits (c'est-a-dire la gestion des
fichiers dont la taille et les decalages dans le fichier ne peuvent
pas etre representes sur 32 bits). Pour gerer ce changement, des
appels systeme, qui utilisent des decalages et des tailles de
fichiers, ont du etre remplaces. Ainsi, les appels systeme suivants
ont ete ajoutes : fcntl64(2), getdents64(2), stat64(2), statfs64(2),
truncate64(2) et leurs appels systeme analogues qui fonctionnent
avec des descripteurs de fichier ou des liens symboliques. Ces
appels systeme remplacent les anciens appels systeme qui, sauf pour
les appels << stat >>, ont le meme nom sans le suffixe << 64 >>.
Sur les plates-formes recentes qui n'ont que des acces 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 systeme pour l'acces
aux fichiers, UID ou GID. Sur les plates-formes (habituellement des
plates-formes 32 bits) ou les les appels *64 et *32 existent, les
autres versions sont obsoletes.
- Les appels rt_sig* ont ete ajoutes dans Linux 2.2 pour gerer l'ajout
des signaux temps reel (consultez signal(7)). Ces appels systeme
remplacent les appels precedents de memes noms sans le prefixe
<< rt_ >>.
- Les appels systeme select(2) et mmap(2) utilisent cinq parametres ou
plus, ce qui a pose des problemes avec les methodes classiques de
passage de parametres sur i386. Ainsi, alors que les autres
architectures disposent de sys_select() et sys_mmap() correspondant
a __NR_select et __NR_mmap, on trouve sur les i386 old_select() et
old_mmap() (des routines utilisant un pointeur vers un bloc de
parametres) a leur place. De nos jours, passer cinq parametres n'est
plus un probleme, et il existe donc un __NR__newselect correspondant
directement a sys_select() ; il en est de meme pour __NR_mmap2.
s390x est la seule architecture 64 bits qui a old_mmap().
Details specifiques a l'architecture : Alpha
getxgid(2)
renvoie une paire de GID et de GID effectif au moyen des
registres r0 et r20 ; il est fourni a 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 a la place de getpid(2) et getppid(2).
old_adjtimex(2)
est une variante de adjtimex(2) qui utilise struct timeval32,
pour une compatibilite avec OSF/1.
getxuid(2)
renvoie une paire de GID et de GID effectif au moyen des
registres r0 et r20 ; il est fourni a la place de getuid(2) et
geteuid(2).
sethae(2)
est utilise pour configurer le registre Host Address Extension
sur les systemes Alpha bon marche afin d'acceder a l'espace
d'adresses au-dela des 27 premiers bits.
VOIR AUSSI
ausyscall(1), intro(2), syscall(2), unimplemented(2), errno(3),
libc(7), vdso(7)
TRADUCTION
La traduction francaise de cette page de manuel a ete creee par
Christophe Blaess , Stephan Rafin
, Thierry Vignaud ,
Francois Micaux, Alain Portal , Jean-Philippe
Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas
Huriaux , Nicolas Francois
, Florentin Duneau
, Simon Paillard , Denis Barbier , David Prevot
et Jean-Pierre Giraud
Cette traduction est une documentation libre ; veuillez vous reporter a
la GNU General Public License version 3
concernant les conditions
de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE.
Si vous decouvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message a .
Pages du manuel de Linux 6.06 16 janvier 2024 syscalls(2)