pthread_attr_setguardsize(3) Library Functions Manual NOM pthread_attr_setguardsize, pthread_attr_getguardsize - Definir ou obtenir la taille de garde d'un objet d'attributs de thread BIBLIOTHEQUE Bibliotheque de threads POSIX (libpthread, -lpthread) SYNOPSIS #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); DESCRIPTION La fonction pthread_attr_setguardsize() definit l'attribut de taille de garde de l'objet d'attributs de thread auquel thread fait reference a la valeur indiquee par guardsize. Si guardsize est positif, alors, pour chaque thread cree avec attr, le systeme alloue une region supplementaire d'au moins guardsize octets a la fin de la pile du thread afin de servir de zone de protection pour la pile (voir la section BOGUES). Si guardsize est nul, les nouveaux threads crees avec attr n'auront pas de zone de protection. La taille de garde par defaut est la taille d'une page systeme. Si l'adresse de la pile a ete definie dans attr (en utilisant pthread_attr_setstack(3) ou pthread_attr_setstackaddr(3)), ce qui signifie que l'appelant alloue la pile du thread, alors l'attribut contenant la taille de garde est ignore (c'est-a-dire, aucune zone de garde n'est creee par le systeme) : il est de la responsabilite de l'application de prendre en charge les debordements de pile (peut-etre en utilisant mprotect(2) pour definir manuellement une zone de protection a la fin de la pile qui a ete allouee). La fonction pthread_attr_getguardsize() renvoie, dans le tampon pointe par guardsize, l'attribut contenant la taille de garde de l'objet d'attributs de thread auquel attr fait reference. VALEUR RENVOYEE En cas de succes, ces fonctions renvoient 0 ; en cas d'erreur, elles renvoient un code d'erreur non nul. ERREURS POSIX.1 documente une erreur EINVAL si attr ou guardsize n'est pas valable. Sous Linux, ces fonctions reussissent toujours (mais les applications portables et a l'epreuve du temps devraient neanmoins prendre en charge une possible valeur de retour). ATTRIBUTS Pour une explication des termes utilises dans cette section, consulter attributes(7). +---------------------------------+--------------------------+---------+ |Interface | Attribut | Valeur | +---------------------------------+--------------------------+---------+ |pthread_attr_setguardsize(), | Securite des threads | MT-Safe | |pthread_attr_getguardsize() | | | +---------------------------------+--------------------------+---------+ STANDARDS POSIX.1-2008. HISTORIQUE glibc 2.1. POSIX.1-2001. NOTES Une zone de garde consiste en des pages de memoire virtuelles qui sont protegees pour empecher des acces en lecture ou ecriture. Si la pile d'un thread deborde dans la zone de garde, alors, pour la plupart des architectures materielles, il recoit un signal SIGSEGV, ce qui le previent du debordement. Les zones de protection demarrent sur des limites de pages, et la taille de garde est arrondie en interne au multiple de taille de pages systeme superieur lors de la creation d'un thread (cependant, pthread_attr_getguardsize() renvoie la taille de garde qui a ete definie par pthread_attr_setguardsize()). Definir une taille de garde de 0 peut etre utile pour economiser de la memoire dans une application qui cree beaucoup de thread et sait qu'il n'y aura jamais de debordement de la pile. Choisir une taille de garde superieure a la taille par defaut peut etre necessaire pour detecter des debordements de pile si un thread alloue des structures de donnees importantes sur la pile. BOGUES Au moment de la glibc 2.8, l'implementation des threads NPTL place la zone de protection dans la taille allouee a la pile, plutot que d'allouer de l'espace supplementaire a la fin de la pile, comme exige par POSIX.1 (ceci peut causer une erreur EINVAL lors de pthread_create(3) si la taille de garde est trop importante, ne laissant en fait pas de place a la pile). L'implementation obsolete LinuxThreads faisait ce qu'il fallait, en allouant de l'espace supplementaire a la fin de la pile pour la zone de protection. EXEMPLES Consultez pthread_getattr_np(3). VOIR AUSSI mmap(2), mprotect(2), pthread_attr_init(3), pthread_attr_setstack(3), pthread_attr_setstacksize(3), pthread_create(3), pthreads(7) TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot et Frederic Hantrais Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 pthread_attr_setguardsize(3)