bionic (2) _syscall.2.gz

Provided by: manpages-it_3.73-2_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, i tipi di argomento 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 3.73 del progetto Linux man-pages.  Una descrizione del progetto,  le
       istruzioni  per  la  segnalazione  degli  errori,  e  l'ultima  versione  di  questa  pagina  si trova su
       http://www.kernel.org/doc/man-pages/.

       La versione italiana fa parte del pacchetto  man-pages-it  v.  3.73,  a  cura  di:  ILDP  "Italian  Linux
       Documentation Project" http://www.pluto.it/ildp
       Per la traduzione in italiano si può fare riferimento a http://www.pluto.it/ildp/collaborare/
       Segnalare eventuali errori di traduzione a ildp@pluto.it