Loading

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é

       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 que vous
       avez  spécifié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, voir 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.23 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

       Cette page de manuel a été traduite et est maintenue par Julien Cristau
       <julien.cristau@ens-lyon.org>  et l’équipe francophone de traduction de
       Debian.

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