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

NUME

       pthread_attr_setguardsize, pthread_attr_getguardsize - stabilește/obține atributul de dimensiune a gărzii
       în obiectul atributele firului de execuție

BIBLIOTECA

       Biblioteca de fire de execuție POSIX (libpthread, -lpthread)

REZUMAT

       #include <pthread.h>

       int pthread_attr_setguardsize(pthread_attr_t *attr, size_t guardsize);
       int pthread_attr_getguardsize(const pthread_attr_t *restrict attr,
                                     size_t *restrict guardsize);

DESCRIERE

       Funcția pthread_attr_setguardsize() stabilește atributul „guard size” (dimensiune a gărzii) al obiectului
       de atribute ale firelor la care face referire attr la valoarea specificată în guardsize.

       Dacă guardsize este mai mare decât 0, atunci pentru fiecare fir nou creat folosind attr, sistemul alocă o
       regiune  suplimentară  de cel puțin guardsize octeți la sfârșitul stivei firului pentru a acționa ca zonă
       de gardă pentru stivă (a se vedea însă secțiunea ERORI).

       Dacă guardsize este 0, atunci firele noi create cu attr nu vor avea o zonă de gardă.

       Dimensiunea implicită a gărzii este aceeași cu dimensiunea paginii sistemului.

       Dacă  atributul  adresei  stivei  a  fost  stabilit  în  attr  (utilizând  pthread_attr_setstack(3)   sau
       pthread_attr_setstackaddr(3)),  ceea  ce  înseamnă  că  apelantul  alocă  stiva firului, atunci atributul
       dimensiunii gărzii este ignorat (de exemplu, pthread_attr_setstackaddr(3)),  sistemul  nu  creează  nicio
       zonă  de  gardă): este responsabilitatea aplicației să gestioneze depășirea stivei (poate prin utilizarea
       mprotect(2) pentru a defini manual o zonă de gardă la capătul stivei pe care a alocat-o).

       Funcția pthread_attr_getguardsize() returnează atributul "guard size" al obiectului atribute ale  firului
       de execuție la care se face referire prin attr în memoria tampon indicată de guardsize..

VALOAREA RETURNATĂ

       În  caz  de  succes,  aceste  funcții  returnează  0; în caz de eroare, ele returnează un număr de eroare
       diferit de zero.

ERORI

       POSIX.1 documentează o eroare EINVAL în cazul în care attr sau  guardsize  nu  este  validă.   În  Linux,
       aceste funcții reușesc întotdeauna (dar aplicațiile portabile și pregătite pentru viitor ar trebui totuși
       să se ocupe de o posibilă returnare de eroare).

VERSIUNI

       Aceste funcții sunt furnizate începând cu glibc 2.1.

ATRIBUTE

       Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
       ┌─────────────────────────────────────────────────────────────────────────┬───────────────────┬─────────┐
       │ InterfațăAtributValoare │
       ├─────────────────────────────────────────────────────────────────────────┼───────────────────┼─────────┤
       │ pthread_attr_setguardsize(), pthread_attr_getguardsize()                │ Siguranța firelor │ MT-Safe │
       └─────────────────────────────────────────────────────────────────────────┴───────────────────┴─────────┘

STANDARDE

       POSIX.1-2001, POSIX.1-2008.

NOTE

       O  zonă  de  gardă constă în pagini de memorie virtuală care sunt protejate pentru a împiedica accesul la
       citire și scriere.  În cazul în care un fir de execuție își depășește stiva în zona de gardă, atunci,  pe
       majoritatea  arhitecturilor,  primește  un semnal SIGSEGV, fiind astfel notificat de depășire.  Zonele de
       gardă încep la limitele paginilor, iar dimensiunea zonei  de  gardă  este  rotunjită  în  mod  intern  la
       dimensiunea  paginii  sistemului  la  crearea  unui  fir;  (cu toate acestea, pthread_attr_getguardsize()
       returnează dimensiunea de gardă care a fost setată de pthread_attr_setguardsize().).

       Stabilirea unei dimensiuni de gardă de 0 poate fi utilă pentru a economisi memorie într-o aplicație  care
       creează multe fire de execuție și știe că nu se poate produce niciodată o depășire a stivei.

       Alegerea  unei  dimensiuni  de  gardă  mai  mari  decât  dimensiunea  implicită  poate fi necesară pentru
       detectarea depășirilor de stivă în cazul în care un fir alocă structuri de date mari pe stivă.

ERORI

       Ca și în glibc 2.8, implementarea NPTL threading include zona de gardă  în  cadrul  alocării  dimensiunii
       stivei,  în  loc  să  aloce spațiu suplimentar la sfârșitul stivei, așa cum prevede POSIX.1; (acest lucru
       poate avea ca rezultat o eroare EINVAL de la pthread_create(3) dacă valoarea dimensiunii  de  gardă  este
       prea mare, nefiind lăsat spațiu pentru stiva propriu-zisă).

       Implementarea  învechită  a LinuxThreads a făcut ceea ce trebuia, alocând spațiu suplimentar la sfârșitul
       stivei pentru zona de gardă.

EXEMPLE

       A se vedea pthread_getattr_np(3).

CONSULTAȚI ȘI

       mmap(2),  mprotect(2),  pthread_attr_init(3),   pthread_attr_setstack(3),   pthread_attr_setstacksize(3),
       pthread_create(3), pthreads(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  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.03                  15 decembrie 2022                   pthread_attr_setguardsize(3)