Provided by: manpages-fr-dev_3.27fr1.4-1_all bug

NOM

       _syscall  -  Invoquer  un  appel  systeme  sans  prise en charge par la
       bibliotheque (OBSOLETE)

SYNOPSIS

       #include <linux/unistd.h>

       Une macro _syscall

       L'appel systeme desire

DESCRIPTION

       La chose importante a savoir sur un appel systeme  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
       systeme. Elles ont la forme :

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

       ou

              X est 0-6, qui est le nombre d'argument pris par l'appel systeme

              type est le type de retour de l'appel systeme

              name est le nom de l'appel systeme

              typeN est le type du Nieme parametre

              argN est le nom du Nieme parametre

       Ces macros creent une fonction appelee name avec les arguments que vous
       avez specifies. Une fois que vous avez  inclus  votre  _syscall()  dans
       votre fichier source, vous pouvez appeler l'appel systeme par name.

FICHIERS

       /usr/include/linux/unistd.h

CONFORMIT'E

       L'utilisation de ces macros est specifique a Linux et est deconseillee.

NOTES

       A   partir  du  noyau 2.6.18  environ,  les  macros  _syscall  ont  ete
       supprimees des fichiers  d'en-tetes  fournis  a  l'espace  utilisateur.
       Utilisez    syscall(2)    a   la   place.   (Certaines   architectures,
       particulierement ia64, n'ont jamais fourni les  macros  _syscall ;  sur
       ces architectures, syscall(2) etait toujours necessaire.)

       Les  macros  _syscall()  ne fournissent pas de prototype. Vous devez en
       creer un, particulierement les utilisateurs de C++.

       Il n'est pas obligatoire que les  appels  systeme  retournent  un  code
       d'erreur seulement positif ou negatif. Vous devez lire les sources pour
       savoir comment les erreurs sont retournees. Generalement, il s'agit  de
       la valeur opposee d'un code d'erreur standard, par exemple, -EPERM. Les
       macros _syscall() retourneront le resultat r de l'appel systeme lorsque
       r  n'est  pas  negatif,  mais retournera -1 et ecrira la variable errno
       avec -r lorsque r est negatif.  Pour  ces  codes  d'erreurs,  consultez
       errno(3).

       Lors de la definition d'un appel systeme, les types d'arguments doivent
       etre passes par valeur ou par pointeur (pour les types  aggreges  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 a partir du fichier source
       nroff de la page, n'oubliez pas de SUPPRIMER les contre obliques
       supplementaires 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);
       }

   'Echantillon 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.27 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler  des
       anomalies       peuvent       etre       trouvees      a      l'adresse
       <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

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

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

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

       Vous pouvez toujours avoir acces a la version anglaise de  ce  document
       en utilisant la commande << man -L C <section> <page_de_man> >>.

Linux                          19 decembre 2007                    _SYSCALL(2)