Provided by: manpages-fr-dev_4.13-4_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(const pthread_attr_t *attr,
                                     size_t *guardsize);

       Compiler et éditer les liens avec -pthreads.

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 succès, ces fonctions renvoient 0 ; en cas d'erreur, elles renvoient un code d'erreur non nul.

ERREURS

       POSIX.1  documents  an  EINVAL  error  if  attr  or guardsize is invalid. On Linux these functions always
       succeed (but portable and future-proof applications should nevertheless handle a possible error return).

VERSIONS

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

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).

       ┌─────────────────────────────┬──────────────────────┬─────────┐
       │InterfaceAttributValeur  │
       ├─────────────────────────────┼──────────────────────┼─────────┤
       │pthread_attr_setguardsize(), │ Sécurité des threads │ MT-Safe │
       │pthread_attr_getguardsize()  │                      │         │
       └─────────────────────────────┴──────────────────────┴─────────┘

CONFORMITÉ

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

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.

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)

COLOPHON

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

TRADUCTION

       La  traduction  française   de   cette   page   de   manuel   a   été   créée   par   Christophe   Blaess
       <https://www.blaess.fr/christophe/>,   Stéphan   Rafin   <stephan.rafin@laposte.net>,   Thierry   Vignaud
       <tvignaud@mandriva.com>, François Micaux, Alain Portal  <aportal@univ-montp2.fr>,  Jean-Philippe  Guérard
       <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-luc.coulon@wanadoo.fr>,   Julien   Cristau
       <jcristau@debian.org>,     Thomas     Huriaux      <thomas.huriaux@gmail.com>,      Nicolas      François
       <nicolas.francois@centraliens.net>,     Florentin     Duneau    <fduneau@gmail.com>,    Simon    Paillard
       <simon.paillard@resel.enst-bretagne.fr>,    Denis    Barbier    <barbier@debian.org>,    David     Prévot
       <david@tilapin.org> et Frédéric Hantrais <fhantrais@gmail.com>

       Cette  traduction  est  une  documentation libre ; veuillez vous reporter à la GNU General Public License
       version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  concernant  les  conditions  de   copie   et   de
       distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si  vous  découvrez  un  bogue  dans la traduction de cette page de manuel, veuillez envoyer un message à
       debian-l10n-french@lists.debian.org ⟨⟩.