syscalls | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
NOM | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
SYNOPSIS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
DESCRIPTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Appels système et fonctions enveloppes de la bibliothèque | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Souvent, la fonction enveloppe de la glibc est ténue, effectuant un tout petit travail avant d'invoquer l'appel système.
Quelque fois, pourtant, la fonction enveloppe effectue un travail supplémentaire avant d'invoquer l'appel système. Par exemple, il y a aujourd'hui (pour des raisons décrites plus loin) deux appels système similaires, truncate(2) et truncate64(2), et la fonction enveloppe truncate(3) de la glibc vérifie quels appels système sont fournis par le noyau et détermine celui qui doit être utilisé.
Liste des appels système | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
La liste des appels système disponibles dans le noyau 2.6.25 (ou dans certains cas, seulement dans des versions plus anciennes) est la suivante :
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).
NOTES | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
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.
Au fil du temps, des modifications des interfaces de certains appels systèmes ont été nécessaires. Une raison justifiant de telles modifications était la nécessité d'augmenter la taille des structures ou des valeurs scalaires passées à l'appel système. À cause de ces modifications, il y a maintenant divers groupes d'appels système similaires (par exemple, truncate(2) et ftruncate64(2)) qui effectuent des tâches similaires mais qui se différencient par des détails comme la taille de leurs arguments. (Comme indiqué précédemment, les applications n'ont en général pas en s'en préoccuper : les fonctions enveloppes de la glibc effectuent certaines tâches pour s'assurer que le bon appel système soit invoqué, et la compatibilité ABI est préservée pour les anciens binaires.) Voici des exemples d'appels système qui existent en plusieurs versions :
Sur les plates-formes récentes qui n'ont que des accès aux fichiers 64 bits et des UID 32 bits (par exemple, 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.
VOIR AUSSI | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
TRADUCTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
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 6 juin 2008.
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.
Sommaire | Début | Suivant | Sommaire | Préc.page.lue | Accueil |