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

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.65 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> ».