pthread_attr_setguardsize(3) Library Functions Manual NUME pthread_attr_setguardsize, pthread_attr_getguardsize - stabilete/obine atributul de dimensiune a garzii in obiectul atributele firului de execuie BIBLIOTECA Biblioteca de fire de execuie POSIX (libpthread, -lpthread) SINOPSIS #include 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 Funcia pthread_attr_setguardsize() stabilete atributul ,,guard size" (dimensiune a garzii) al obiectului de atribute ale firelor la care face referire attr la valoarea specificata in guardsize. Daca guardsize este mai mare decat 0, atunci pentru fiecare fir nou creat folosind attr, sistemul aloca o regiune suplimentara de cel puin guardsize octei la sfaritul stivei firului pentru a aciona ca zona de garda pentru stiva (a se vedea insa seciunea ERORI). Daca guardsize este 0, atunci firele noi create cu attr nu vor avea o zona de garda. Dimensiunea implicita a garzii este aceeai cu dimensiunea paginii sistemului. Daca atributul adresei stivei a fost stabilit in attr (utilizand pthread_attr_setstack(3) sau pthread_attr_setstackaddr(3)), ceea ce inseamna ca apelantul aloca stiva firului, atunci atributul dimensiunii garzii este ignorat (de exemplu, pthread_attr_setstackaddr(3)), sistemul nu creeaza nicio zona de garda): este responsabilitatea aplicaiei sa gestioneze depairea stivei (poate prin utilizarea mprotect(2) pentru a defini manual o zona de garda la capatul stivei pe care a alocat-o). Funcia pthread_attr_getguardsize() returneaza atributul "guard size" al obiectului atribute ale firului de execuie la care se face referire prin attr in memoria tampon indicata de guardsize.. VALOAREA RETURNATA In caz de succes, aceste funcii returneaza 0; in caz de eroare, ele returneaza un numar de eroare diferit de zero. ERORI-IEIRE POSIX.1 documenteaza o eroare EINVAL in cazul in care attr sau guardsize nu este valida. In Linux, aceste funcii reuesc intotdeauna (dar aplicaiile portabile i pregatite pentru viitor ar trebui totui sa se ocupe de o posibila returnare de eroare). ATRIBUTE Pentru o explicaie a termenilor folosii in aceasta seciune, a se vedea attributes(7). +--------------------------------------+---------------------+---------+ |Interfaa | Atribut | Valoare | +--------------------------------------+---------------------+---------+ |pthread_attr_setguardsize(), | Sigurana firelor | MT-Safe | |pthread_attr_getguardsize() | | | +--------------------------------------+---------------------+---------+ STANDARDE POSIX.1-2008. ISTORIC glibc 2.1. POSIX.1-2001. NOTE O zona de garda consta in pagini de memorie virtuala care sunt protejate pentru a impiedica accesul la citire i scriere. In cazul in care un fir de execuie ii depaete stiva in zona de garda, atunci, pe majoritatea arhitecturilor, primete un semnal SIGSEGV, fiind astfel notificat de depaire. Zonele de garda incep la limitele paginilor, iar dimensiunea zonei de garda este rotunjita in mod intern la dimensiunea paginii sistemului la crearea unui fir; (cu toate acestea, pthread_attr_getguardsize() returneaza dimensiunea de garda care a fost setata de pthread_attr_setguardsize().). Stabilirea unei dimensiuni de garda de 0 poate fi utila pentru a economisi memorie intr-o aplicaie care creeaza multe fire de execuie i tie ca nu se poate produce niciodata o depaire a stivei. Alegerea unei dimensiuni de garda mai mari decat dimensiunea implicita poate fi necesara pentru detectarea depairilor de stiva in cazul in care un fir aloca structuri de date mari pe stiva. ERORI Ca i in glibc 2.8, implementarea NPTL threading include zona de garda in cadrul alocarii dimensiunii stivei, in loc sa aloce spaiu suplimentar la sfaritul stivei, aa cum prevede POSIX.1; (acest lucru poate avea ca rezultat o eroare EINVAL de la pthread_create(3) daca valoarea dimensiunii de garda este prea mare, nefiind lasat spaiu pentru stiva propriu-zisa). Implementarea invechita a LinuxThreads a facut ceea ce trebuia, alocand spaiu suplimentar la sfaritul stivei pentru zona de garda. EXEMPLE A se vedea pthread_getattr_np(3). CONSULTAI I mmap(2), mprotect(2), pthread_attr_init(3), pthread_attr_setstack(3), pthread_attr_setstacksize(3), pthread_create(3), pthreads(7) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . Pagini de manual de Linux 6.18 17 mai 2025 pthread_attr_setguardsize(3)