Provided by: manpages-ro-dev_4.21.0-2_all bug

NUME

       getcpu - determină CPU-ul și nodul NUMA pe care rulează firul apelant

BIBLIOTECA

       Biblioteca C standard (libc, -lc)

REZUMAT

       #define _GNU_SOURCE             /* Consultați feature_test_macros(7) */
       #include <sched.h>

       int getcpu(unsigned int *_Nullable cpu, unsigned int *_Nullable node);

DESCRIERE

       Apelul  de  sistem  getcpu()  identifică procesorul și nodul pe care se execută în prezent
       firul sau procesul apelant și le scrie în numerele întregi indicate de argumentele cpu  și
       nod.  Procesorul este un număr întreg mic și unic care identifică un procesor.  Nodul este
       un identificator mic unic care identifică un nod NUMA.  Atunci când cpu sau nod este NULL,
       nu se scrie nimic în indicatorul respectiv.

       Informațiile  plasate  în  cpu sunt garantate a fi actuale doar în momentul apelului: dacă
       afinitatea procesorului nu a fost  fixată  folosind  sched_setaffinity(2),  nucleul  poate
       schimba  procesorul  în orice moment; (în mod normal, acest lucru nu se întâmplă, deoarece
       planificatorul încearcă să minimizeze mișcările între CPU-uri  pentru  a  menține  memoria
       cache   în   funcțiune,  dar  este  posibil).  Apelantul  trebuie  să  ia  în  considerare
       posibilitatea ca informațiile returnate în cpu și node să nu mai fie actuale  în  momentul
       în care apelul returnează.

VALOAREA RETURNATĂ

       În  caz  de  succes,  se  returnează 0. În caz de eroare, se returnează -1, iar errno este
       configurată pentru a indica eroarea.

ERORI

       EFAULT Argumentele indică în afara spațiului de adrese al procesului apelant.

VERSIUNI

       getcpu() a fost adăugat în Linux 2.6.19 pentru x86-64 și i386.  Suportul pentru bibliotecă
       a  fost  adăugat  în  glibc  2.29  (versiunile  anterioare  ale glibc nu ofereau o funcție
       învăluitoare pentru acest apel de sistem, fiind necesară utilizarea syscall(2)).

STANDARDE

       getcpu() este specific Linux.

NOTE

       Linux depune toate eforturile pentru a efectua acest apel  cât  mai  repede  posibil;  (pe
       unele  arhitecturi,  acest  lucru  se face prin intermediul unei implementări în vdso(7)).
       Intenția lui getcpu() este de a permite programelor să facă optimizări cu date per-CPU sau
       pentru optimizarea NUMA.

   Diferențe între biblioteca C și nucleu
       Apelul de sistem al nucleului are un al treilea argument:

           int getcpu(unsigned int *cpu, unsigned int *node,
                      struct getcpu_cache *tcache);

       Argumentul tcache este nefolosit începând cu Linux 2.6.24 și (atunci când se invocă direct
       apelul de sistem) ar trebui să fie specificat ca NULL, cu excepția cazului  în  care  este
       necesară portabilitatea la Linux 2.6.23 sau la o versiune anterioară.

       În  Linux  2.6.23  și  versiunile  anterioare,  dacă argumentul tcache nu era NULL, atunci
       acesta specifica un indicator către o memorie tampon alocată de apelant în memoria  locală
       a  firului de execuție care era utilizată pentru a furniza un mecanism de stocare în cache
       pentru getcpu(). Utilizarea cache-ului putea accelera apelurile  getcpu(),  cu  prețul  că
       exista  o  șansă  foarte  mică  ca  informațiile  returnate să nu mai fie actualizate. S-a
       considerat că mecanismul de stocare în cache ar putea cauza probleme la  migrarea  firelor
       de execuție între CPU-uri, astfel că argumentul este acum ignorat.

CONSULTAȚI ȘI

       mbind(2), sched_setaffinity(2), set_mempolicy(2), sched_getcpu(3), cpuset(7), vdso(7)

TRADUCERE

       Traducerea  în  limba  română  a  acestui  manual  a  fost  creată  de Remus-Gabriel Chelu
       <remusgabriel.chelu@disroot.org>

       Această  traducere  este  documentație  gratuită;  citiți  Licența  publică  generală  GNU
       Versiunea  3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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⟩.