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

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