Provided by:
manpages-fr-dev_3.27fr1.4-1_all 
NOM
pthread_attr_setguardsize, pthread_attr_getguardsize - Definir ou
obtenir la taille de garde d'un objet d'attributs de thread
SYNOPSIS
#include <pthread.h>
int pthread_attr_setguardsize(pthread_attr_t *attr, size_t guardsize);
int pthread_attr_getguardsize(pthread_attr_t *attr, size_t *guardsize);
Compilez et effectuez l'edition des liens avec l'option -pthread.
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 RENVOY'EE
En cas de reussite, ces fonctions renvoient 0 ; en cas d'erreur elles
renvoient un numero d'erreur non nul.
ERREURS
POSIX.1-2001 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).
VERSIONS
Ces fonctions sont fournies par la glibc depuis la version 2.1.
CONFORMIT'E
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.
EXEMPLE
Consultez pthread_getattr_np(3).
VOIR AUSSI
mmap(2), mprotect(2), pthread_attr_init(3), pthread_create(3),
pthread_attr_setstack(3), pthread_attr_setstacksize(3), pthreads(7)
COLOPHON
Cette page fait partie de la publication 3.27 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent etre trouvees a l'adresse
<URL:http://www.kernel.org/doc/man-pages/>.
TRADUCTION
Depuis 2010, cette traduction est maintenue a l'aide de l'outil po4a
<URL:http://po4a.alioth.debian.org/> par l'equipe de traduction
francophone au sein du projet perkamon
<URL:http://perkamon.alioth.debian.org/>.
Nicolas Francois et l'equipe francophone de traduction de
Debian (2006-2009).
Veuillez signaler toute erreur de traduction en ecrivant a
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir acces a la version anglaise de ce document
en utilisant la commande << man -L C <section> <page_de_man> >>.