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)