Provided by: manpages-it-dev_4.27.0-1_all bug

_syscall(2)                             Manuale delle chiamate di sistema                            _syscall(2)

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 è nell'intervallo 0–6, che è 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

       Linux.

STORIA

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

NOTE

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

ESEMPI

       #include <stdio.h>
       #include <stdlib.h>
       #include <errno.h>
       #include <linux/unistd.h>       /* per macro e altro relativo a _syscallX */
       #include <linux/kernel.h>       /* per struct sysinfo */

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

       int
       main(void)
       {
           struct sysinfo s_info;
           int error;

           error = sysinfo(&s_info);
           printf("codice errore = %d\n", error);
           printf("Uptime = %lds\nCarico: 1 min %lu / 5 min %lu / 15 min %lu\n"
                  "RAM: totale %lu / libera %lu / condivisa %lu\n"
                  "Memoria in buffer = %lu\nSwap: totale %lu / libera %lu\n"
                  "Numero di processi = %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
       codice errore = 0
       uptime = 502034s
       Carico: 1 min 13376 / 5 min 5504 / 15 min 1152
       RAM: totale 15343616 / libera 827392 / condivisa 8237056
       Memoria in buffer = 5066752
       Swap: totale 27881472 / libera 24698880
       Numero di processi = 40

VEDERE ANCHE

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

TRADUZIONE

       La traduzione italiana di questa pagina di manuale è stata creata da Elisabetta Galli <lab@kkk.it>, Marco
       Curreli <marcocurreli@tiscali.it> e Giuseppe Sacco <eppesuig@debian.org>

       Questa traduzione è documentazione libera; leggere la GNU General Public License Versione 3 o  successiva
       per le condizioni di copyright. Non ci assumiamo alcuna responsabilità.

       Per  segnalare  errori  nella  traduzione  di  questa  pagina  di  manuale  inviare un messaggio a pluto-
       ildp@lists.pluto.it.

Linux man-pages 6.9.1                            15 giugno 2024                                      _syscall(2)