.\" -*- coding: UTF-8 -*- .\" Copyright (c) 1993 Michael Haardt (michael@moria.de), .\" Fri Apr 2 11:32:09 MET DST 1993 .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\" .\" Tue Jul 6 12:42:46 MDT 1993 .\" Added "Calling Directly" and supporting paragraphs .\" .\" Modified Sat Jul 24 15:19:12 1993 by Rik Faith .\" .\" Modified 21 Aug 1994 by Michael Chastain : .\" Added explanation of arg stacking when 6 or more args. .\" .\" Modified 10 June 1995 by Andries Brouwer .\" .\" 2007-10-23 mtk: created as a new page, by taking the content .\" specific to the _syscall() macros from intro(2). .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH _syscall 2 "3 mai 2023" "Pagini de manual de Linux 6.05.01" .SH NUME _syscall \- invocarea unui apel de sistem fără suport de bibliotecă (IEȘIT DIN UZ) .SH REZUMAT .nf \fB#include \fP .PP O macrocomandă _syscall .PP apelul de sistem dorit .fi .SH 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: .PP .in +4n .EX _syscall\fIX\fP(\fItype\fP,\fIname\fP,\fItype1\fP,\fIarg1\fP,\fItype2\fP,\fIarg2\fP,...) .EE .in .PP unde: .IP \fIX\fP este 0\[en]6, care reprezintă numărul de argumente luate de apelul de sistem .IP \fItype\fP este tipul de returnare al apelului de sistem .IP \fIname\fP este numele apelului de sistem .IP \fItypeN\fP este tipul celui de\-al N\-lea argument .IP \fIargN\fP este numele celui de\-al N\-lea argument .PP Aceste macrocomenzi creează o funcție numită \fIname\fP cu argumentele pe care le specificați. Odată ce includeți _syscall() în fișierul sursă, apelați apelul de sistem prin \fIname\fP. .SH FIȘIERE \fI/usr/include/linux/unistd.h\fP .SH STANDARDE Linux. .SH 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 \fBsyscall\fP(2); (unele arhitecturi, în special ia64, nu au furnizat niciodată macrocomenzile _syscall; pe acele arhitecturi, \fBsyscall\fP(2) a fost întotdeauna necesar). .SH NOTE Macrocomenzile _syscall() \fInu\fP produc un prototip. Este posibil să trebuiască să creați unul, în special pentru utilizatorii de C++. .PP 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, \-\fIEPERM\fP. Macrocomenzile _syscall() vor returna rezultatul \fIr\fP al apelului de sistem atunci când \fIr\fP este nenegativ, dar vor returna \-1 și vor stabili variabila \fIerrno\fP la \-\fIr\fP atunci când \fIr\fP este negativ. Pentru codurile de eroare, a se vedea \fBerrno\fP(3). .PP .\" 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. .\" Atunci când se definește un apel de sistem, tipurile de argumente \fItrebuie\fP să fie transmise prin\-valoare sau prin\-indicator (pentru agregate precum structurile). .SH EXEMPLE .\" [[deprecated]] SRC BEGIN (_syscall.c) .EX #include #include #include #include /* pentru macrocomenzi/lucruri conexe _syscallX */ #include /* 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\en", error); printf("Uptime = %lds\enLoad: 1 min %lu / 5 min %lu / 15 min %lu\en" "RAM: total %lu / free %lu / shared %lu\en" "Memory in buffers = %lu\enSwap: total %lu / free %lu\en" "Number of processes = %d\en", 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 "Exemplu de ieșire" .EX 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 .EE .SH "CONSULTAȚI ȘI" \fBintro\fP(2), \fBsyscall\fP(2), \fBerrno\fP(3) .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .