Provided by: manpages-fr-dev_3.57d1p1-1_all bug

NOM

       pthread_attr_setguardsize,  pthread_attr_getguardsize  - Définir 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'édition des liens avec l'option -pthread.

DESCRIPTION

       La fonction pthread_attr_setguardsize() définit l'attribut de taille de garde de l'objet  d'attributs  de
       thread auquel thread fait référence à la valeur indiquée par guardsize.

       Si  guardsize  est  positif,  alors,  pour  chaque  thread  créé  avec attr, le système alloue une région
       supplémentaire d'au moins guardsize octets à 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 créés avec attr n'auront pas de zone de protection.

       La taille de garde par défaut est la taille d'une page système.

       Si   l'adresse   de   la  pile  a  été  définie  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 ignoré (c'est-à-dire, aucune zone de garde n'est créée par le système) :
       il  est de la responsabilité de l'application de prendre en charge les débordements de pile (peut-être en
       utilisant mprotect(2) pour définir manuellement une zone de protection à la fin de  la  pile  qui  a  été
       allouée).

       La  fonction  pthread_attr_getguardsize()  renvoie,  dans  le  tampon  pointé  par  guardsize, l'attribut
       contenant la taille de garde de l'objet d'attributs de thread auquel attr fait référence.

VALEUR RENVOYÉE

       En cas de réussite, ces fonctions renvoient 0 ; en cas d'erreur elles renvoient un  numéro  d'erreur  non
       nul.

ERREURS

       POSIX.1-2001  documente  une  erreur  EINVAL  si  attr  ou  guardsize  n'est pas valable. Sous Linux, ces
       fonctions réussissent toujours (mais les  applications  portables  et  à  l'épreuve  du  temps  devraient
       néanmoins prendre en charge une possible valeur de retour).

VERSIONS

       Ces fonctions sont fournies par la glibc depuis la version 2.1.

CONFORMITÉ

       POSIX.1-2001.

NOTES

       Une  zone de garde consiste en des pages de mémoire virtuelles qui sont protégées pour empêcher des accès
       en lecture ou écriture. Si la pile d'un thread déborde dans la zone de garde, alors, pour la plupart  des
       architectures  matérielles,  il reçoit un signal SIGSEGV, ce qui le prévient du débordement. Les zones de
       protection démarrent sur des limites de pages, et la taille de garde est arrondie en interne au  multiple
       de    taille   de   pages   système   supérieur   lors   de   la   création   d'un   thread   (cependant,
       pthread_attr_getguardsize()   renvoie    la    taille    de    garde    qui    a    été    définie    par
       pthread_attr_setguardsize()).

       Définir  une  taille de garde de 0 peut être utile pour économiser de la mémoire dans une application qui
       crée beaucoup de thread et sait qu'il n'y aura jamais de débordement de la pile.

       Choisir une taille de garde supérieure à la taille par défaut peut  être  nécessaire  pour  détecter  des
       débordements de pile si un thread alloue des structures de données importantes sur la pile.

BOGUES

       Au  moment  de la glibc 2.8, l'implémentation des threads NPTL place la zone de protection dans la taille
       allouée à la pile, plutôt que d'allouer de l'espace supplémentaire à la fin de la pile, comme  exigé  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 à la pile).

       L'implémentation obsolète LinuxThreads faisait ce qu'il fallait, en allouant de l'espace supplémentaire à
       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_attr_setstack(3),   pthread_attr_setstacksize(3),
       pthread_create(3), pthreads(7)

COLOPHON

       Cette page fait partie de la publication 3.57 du projet man-pages Linux. Une description du projet et des
       instructions     pour     signaler     des     anomalies    peuvent    être    trouvées    à    l'adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par
       l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.

       Nicolas François et l'équipe francophone de traduction de Debian (2006-2009).

       Veuillez signaler toute erreur de traduction en écrivant à <debian-l10n-french@lists.debian.org>  ou  par
       un rapport de bogue sur le paquet manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « man -L C
       <section> <page_de_man> ».

Linux                                            24 octobre 2008                    PTHREAD_ATTR_SETGUARDSIZE(3)