Provided by: manpages-fr-dev_4.26.0-1_all bug

_syscall(2)                                 Manuel des appels système                                _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

STANDARDS

       Linux.

HISTORIQUE

       À  partir de Linux 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.)

NOTES

       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)

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.

Pages du manuel de Linux 6.9.1                    15 juin 2024                                       _syscall(2)