Provided by: manpages-fr-dev_4.23.1-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

BIBLIOTHÈQUE

       Bibliothèque de threads POSIX (libpthread, -lpthread)

SYNOPSIS

       #include <pthread.h>

       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() 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 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).

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()                             │                      │         │
       └────────────────────────────────────────────────────────┴──────────────────────┴─────────┘

STANDARDS

       POSIX.1-2008.

HISTORIQUE

       glibc 2.1. 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.

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  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⟩.