.\" -*- coding: UTF-8 -*- .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH _syscall 2 "17 maggio 2025" "Linux man\-pages 6.18" .SH NOME _syscall \- invoca una chiamata di sistema senza supporto di libreria (OBSOLETO) .SH SINTASSI .nf \fB#include \fP .P Una macro _syscall .P la chiamata di sistema desiderata .fi .SH 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: .P .in +4n .EX _syscall\fIX\fP(\fItipo\fP,\fInome\fP,\fItipo1\fP,\fIarg1\fP,\fItipo2\fP,\fIarg2\fP,...) .EE .in .P dove .IP \fIX\fP è nell'intervallo 0\[en]6, che è il numero di argomenti presi dalla chiamata di sistema .IP \fItipo\fP è il tipo di ritorno della chiamata di sistema .IP \fInome\fP è il nome della chiamata di sistema .IP \fItipoN\fP è il tipo dell'N\-esimo argomento .IP \fIargN\fP è il nome dell'N\-esimo argomento .P Queste macro creano una funzione chiamata \fInome\fP con gli argomenti specificati. Una volta inclusa la _syscall() nel proprio file sorgente, si può chiamare la chiamata di sistema con \fInome\fP. .SH FILE \fI/usr/include/linux/unistd.h\fP .SH "CONFORME A" Linux. .SH 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 \fBsyscall\fP(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 \fBsyscall\fP(2)). .SH NOTE Le macro _syscall() \fInon\fP producono un prototipo. Occorrerà quindi crearne uno, specialmente per chi usa C++. .P 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 \-\fIEPERM\fP. Le macro _syscall() restituiranno il risultato \fIr\fP della chiamata di sistema quando \fIr\fP è non\-negativo, ma restituiranno \-1 e imposteranno la variabile \fIerrno\fP a \fIr\fP quando \fIr\fP è negativo. Per i codici di errore si veda \fBerrno\fP(3). .P .\" The preferred way to invoke system calls that glibc does not know .\" about yet is via .\" .BR syscall (2). .\" However, this mechanism can be used only if using a libc .\" (such as glibc) that supports .\" .BR syscall (2), .\" and if the .\" .I .\" header file contains the required SYS_foo definition. .\" Otherwise, the use of a _syscall macro is required. .\" Quando si definisce una chiamata di sistema, i tipi di argomento \fIdevono\fP essere passati per valore o per puntatore (per gli aggregati come le strutture). .SH ESEMPI .\" SRC BEGIN (_syscall.c) .EX #include #include #include #include /* per macro e altro relativo a _syscallX */ #include /* 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\[rs]n", error); printf("Uptime = %lds\[rs]nCarico: 1 min %lu / 5 min %lu / 15 min %lu\[rs]n" "RAM: totale %lu / libera %lu / condivisa %lu\[rs]n" "Memoria in buffer = %lu\[rs]nSwap: totale %lu / libera %lu\[rs]n" "Numero di processi = %d\[rs]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); } .EE .\" SRC END .SS "Esempio di Output" .EX 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 .EE .SH "VEDERE ANCHE" \fBintro\fP(2), \fBsyscall\fP(2), \fBerrno\fP(3) .PP .SH TRADUZIONE La traduzione italiana di questa pagina di manuale è stata creata da Elisabetta Galli , Marco Curreli e Giuseppe Sacco . .PP Questa traduzione è documentazione libera; leggere la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Versione 3 .UE o successiva per le condizioni di copyright. Non ci assumiamo alcuna responsabilità. .PP Per segnalare errori nella traduzione di questa pagina di manuale inviare un messaggio a .MT pluto-ildp@lists.pluto.it .ME .