Provided by: manpages-ro-dev_4.27.0-1_all 

_syscall(2) System Calls Manual _syscall(2)
NUME
_syscall - invocarea unui apel de sistem fără suport de bibliotecă (IEȘIT DIN UZ)
SINOPSIS
#include <linux/unistd.h>
O macrocomandă _syscall
apelul de sistem dorit
DESCRIERE
Ceea ce este important de știut despre un apel de sistem este prototipul acestuia. Trebuie să știți câte
argumente, tipurile acestora și tipul de returnare al funcției. Există șapte macrocomenzi care ușurează
apelul propriu-zis în sistem. Acestea au forma:
_syscallX(type,name,type1,arg1,type2,arg2,...)
unde:
X este 0–6, care reprezintă numărul de argumente luate de apelul de sistem
type este tipul de returnare al apelului de sistem
name este numele apelului de sistem
typeN este tipul celui de-al N-lea argument
argN este numele celui de-al N-lea argument
Aceste macrocomenzi creează o funcție numită name cu argumentele pe care le specificați. Odată ce
includeți _syscall() în fișierul sursă, apelați apelul de sistem prin name.
FIȘIERE
/usr/include/linux/unistd.h
STANDARDE
Linux.
ISTORIC
Începând cu Linux 2.6.18, macrocomenzile _syscall au fost eliminate din fișierele de antet furnizate în
spațiul utilizatorului. Utilizați în schimb syscall(2); (unele arhitecturi, în special ia64, nu au
furnizat niciodată macrocomenzile _syscall; pe acele arhitecturi, syscall(2) a fost întotdeauna necesar).
NOTE
Macrocomenzile _syscall() nu produc un prototip. Este posibil să trebuiască să creați unul, în special
pentru utilizatorii de C++.
Apelurile de sistem nu sunt obligate să returneze numai coduri de eroare pozitive sau negative. Trebuie
să citiți sursa pentru a fi siguri de modul în care va returna erorile. De obicei, este vorba de
negativul unui cod de eroare standard, de exemplu, -EPERM. Macrocomenzile _syscall() vor returna
rezultatul r al apelului de sistem atunci când r este nenegativ, dar vor returna -1 și vor stabili
variabila errno la -r atunci când r este negativ. Pentru codurile de eroare, a se vedea errno(3).
Atunci când se definește un apel de sistem, tipurile de argumente trebuie să fie transmise prin-valoare
sau prin-indicator (pentru agregate precum structurile).
EXEMPLE
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <linux/unistd.h> /* pentru macrocomenzi/lucruri conexe _syscallX */
#include <linux/kernel.h> /* pentru structura sysinfo */
_syscall1(int, sysinfo, struct sysinfo *, info);
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);
}
Exemplu de ieșire
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
CONSULTAȚI ȘI
intro(2), syscall(2), errno(3)
TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu
<remusgabriel.chelu@disroot.org>
Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o
versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO
RESPONSABILITATE.
Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-
ro@lists.sourceforge.net.
Pagini de manual de Linux 6.9.1 15 iunie 2024 _syscall(2)