Provided by: manpages-fr-dev_3.57d1p1-1_all bug

_SYSCALL(2)                                Manuel du programmeur Linux                               _SYSCALL(2)

NOM

       _syscall - Invoquer un appel système sans prise en charge par la bibliothèque (OBSOLÈTE)

SYNOPSIS

       #include <linux/unistd.h>

       Une macro _syscall

       L'appel système désiré

DESCRIPTION

       La  chose  importante  à  savoir  sur  un  appel  système  est  son  prototype. Vous devez savoir combien
       d'arguments il prend, leurs types et le type retour de la fonction. Il y a sept macros qui facilitent les
       appels du système. Elles ont la forme :

              _syscallX(type,name,type1,arg1,type2,arg2,...)

       où

              X est 0–6, qui est le nombre d'argument pris par l'appel système

              type est le type de retour de l'appel système

              name est le nom de l'appel système

              typeN est le type du Nième paramètre

              argN est le nom du Nième paramètre

       Ces macros créent une fonction appelée name avec les arguments indiqués. Une fois que  vous  avez  inclus
       votre _syscall() dans votre fichier source, vous pouvez appeler l'appel système par name.

FICHIERS

       /usr/include/linux/unistd.h

CONFORMITÉ

       L'utilisation de ces macros est spécifique à Linux et est déconseillée.

NOTES

       À  partir du noyau 2.6.18 environ, les macros _syscall ont été supprimées des fichiers d'en-têtes fournis
       à l'espace utilisateur. Utilisez syscall(2) à la place. (Certaines architectures, particulièrement  ia64,
       n'ont jamais fourni les macros _syscall ; sur ces architectures, syscall(2) était toujours nécessaire.)

       Les  macros  _syscall()  ne  fournissent  pas  de prototype. Vous devez en créer un, particulièrement les
       utilisateurs de C++.

       Il n'est pas obligatoire que les appels système retournent un code d'erreur seulement positif ou négatif.
       Vous devez lire les sources pour savoir comment les erreurs sont retournées. Généralement, il  s'agit  de
       la valeur opposée d'un code d'erreur standard, par exemple, -EPERM. Les macros _syscall() retourneront le
       résultat r de l'appel système lorsque r n'est pas négatif, mais retournera -1 et écrira la variable errno
       avec -r lorsque r est négatif. Pour ces codes d'erreurs, consultez errno(3).

       Lors  de  la  définition  d'un appel système, les types d'arguments doivent être passés par valeur ou par
       pointeur (pour les types aggrégés comme les structures).

EXEMPLE

       #include <stdio.h>
       #include <stdlib.h>
       #include <errno.h>
       #include <linux/unistd.h>       /* pour les _syscallX et autres */
       #include <linux/kernel.h>       /* pour struct sysinfo */

       _syscall1(int, sysinfo, struct sysinfo *, info);

       /* Note : si vous copiez directement à partir du fichier source
       nroff de la page, n'oubliez pas de SUPPRIMER les contre obliques
       supplémentaires dans l'instruction printf. */

       int
       main(void)
       {
           struct sysinfo s_info;
           int error;

           error = sysinfo(&s_info);
           printf("code error = %d\n", error);
           printf("Uptime = %lds\nLoad: 1 min %lu / 5 min %lu / 15 min %lu\n"
                  "RAM: total %lu / free %lu / shared %lu\n"
                  "Memory in buffers = %lu\nSwap: total %lu / free %lu\n"
                  "Number of processes = %d\n",
                  s_info.uptime, s_info.loads[0],
                  s_info.loads[1], s_info.loads[2],
                  s_info.totalram, s_info.freeram,
                  s_info.sharedram, s_info.bufferram,
                  s_info.totalswap, s_info.freeswap,
                  s_info.procs);
           exit(EXIT_SUCCESS);
       }

   Échantillon de sortie
       code error = 0
       uptime = 502034s
       Load: 1 min 13376 / 5 min 5504 / 15 min 1152
       RAM: total 15343616 / free 827392 / shared 8237056
       Memory in buffers = 5066752
       Swap: total 27881472 / free 24698880
       Number of processes = 40

VOIR AUSSI

       intro(2), syscall(2), errno(3)

COLOPHON

       Cette page fait partie de la publication 3.57 du projet man-pages Linux. Une description du projet et des
       instructions    pour    signaler    des    anomalies    peuvent     être     trouvées     à     l'adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par
       l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.

       Julien Cristau et l'équipe francophone de traduction de Debian (2006-2009).

       Veuillez  signaler  toute erreur de traduction en écrivant à <debian-l10n-french@lists.debian.org> ou par
       un rapport de bogue sur le paquet manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « man -L C
       <section> <page_de_man> ».

Linux                                           19 décembre 2007                                     _SYSCALL(2)