Provided by: manpages-it_2.80-3_all bug

NOME

       _syscall  -  invoca  una chiamata di sistema senza supporto di libreria
       (OBSOLETO)

SINTASSI

       #include <linux/unistd.h>

       Una macro _syscall

       la chiamata di sistema desiderata

DESCRIZIONE

       La cosa importante da sapere  sulle  chiamate  di  sistema  è  il  loro
       prototipo.   Bisogna  conoscere il numero di argomenti, il loro tipo, e
       il tipo di ritorno della funzione.  Ci sono sette macro che rendono più
       facile la reale chiamata nel sistema.  Hanno il formato:

              _syscallX(tipo,nome,tipo1,arg1,tipo2,arg2,...)

       Dove

              X  è  tra  0  e  6,  che sono il numero di argomenti presi dalla
              chiamata di sistema

              tipo è il tipo di ritorno della chiamata di sistema

              nome è il nome della chiamata di sistema

              tipoN è il tipo dell’N-esimo argomento

              argN è il nome dell’N-esimo argomento

       Queste macro creano  una  funzione  chiamata  nome  con  gli  argomenti
       specificati.    Una  volta  inclusa  la  _syscall()  nel  proprio  file
       sorgente, si può chiamare la chiamata di sistema con nome.

FILE

       /usr/include/linux/unistd.h

CONFORME A

       L’uso di queste macro è specifico di Linux, ed è deprecato.

NOTE

       A partire dal kernel 2.6.18 le macro di _syscall sono state rimosse dai
       file  di intestazione messi a disposizione nello spazio utente.  Si usi
       syscall(2) al loro posto.   (Alcune  architetture,  in  particolare  la
       ia64,  non  ha  mai  messo  a disposizione le macro _syscall: su queste
       architetture è sempre stato richiesto syscall(2)).

       Le macro _syscall()  non  producono  un  prototipo.   Occorrerà  quindi
       crearne uno, specialmente per chi usa C++.

       Le  chiamate  di sistema non devono per forza restituire solo codici di
       errore positivi o negativi.  Occorrerà leggere il sorgente  per  essere
       sicuri  di  come  ognuna  di  esse riporta gli errori.  Solitamente, il
       valore di ritorno è il negato di un  codice  di  errore  standard,  per
       esempio -EPERM.  Le macro _syscall() restituiranno il risultato r della
       chiamata di sistema quando r è  non-negativo,  ma  restituiranno  -1  e
       imposteranno la variabile errno a -r quando r è negativo.  Per i codici
       di errore si veda errno(3).

       Quando si definisce una  chiamata  di  sistema,  gli  argomenti  DEVONO
       essere  passati  per  valore o per puntatore (per gli aggregati come le
       strutture).

ESEMPIO

       #include <stdio.h>
       #include <stdlib.h>
       #include <errno.h>
       #include <linux/unistd.h>     /* per cose relative alle macro _syscallX */
       #include <linux/kernel.h>     /* per sysinfo struct */

       _syscall1(int, sysinfo, struct sysinfo *, info);

       /* Nota: se si copia direttamente dal sorgente nroff, ricordarsi di
       TOGLIERE i caratteri ‘´ in più nell’espressione di 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);
       }

   Esempio di Output
       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

VEDERE ANCHE

       intro(2), syscall(2), errno(3)

COLOPHON

       Questa pagina fa parte del rilascio  2.75  del  progetto  man-pages  di
       Linux.   Si può trovare una descrizione del progetto, e informazioni su
       come riportare bachi, presso http://www.kernel.org/doc/man-pages/.  Per
       la    traduzione    in    italiano    si   può   fare   riferimento   a
       http://www.pluto.it/ildp/collaborare/