Provided by: manpages-fr-dev_4.13-4_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,nom,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).

EXEMPLES

       #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);

       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 5.10 du projet man-pages Linux. Une description du projet et des
       instructions pour signaler des anomalies et la dernière version de cette page  peuvent  être  trouvées  à
       l'adresse https://www.kernel.org/doc/man-pages/.

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-Philippe MENGUAL <jpmengual@debian.org>

       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.

Linux                                              9 juin 2020                                       _SYSCALL(2)