Provided by: manpages-fr-dev_4.21.0-2_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).

VERSIONS

       Ces fonctions sont fournies depuis la glibc 2.1.

ATTRIBUTS

       Pour une explication des termes utilisés dans cette section, consulter attributes(7).
       ┌──────────────────────────────────────────────────────────────────────┬──────────────────────┬─────────┐
       │ InterfaceAttributValeur  │
       ├──────────────────────────────────────────────────────────────────────┼──────────────────────┼─────────┤
       │ pthread_attr_setguardsize(), pthread_attr_getguardsize()             │ Sécurité des threads │ MT-Safe │
       └──────────────────────────────────────────────────────────────────────┴──────────────────────┴─────────┘

STANDARDS

       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_getguard‐
       size() 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  im‐
       portante, 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 <tvi‐
       gnaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe  Guérard  <fe‐
       vrier@tigreraye.org>,  Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@de‐
       bian.org>,  Thomas  Huriaux  <thomas.huriaux@gmail.com>,   Nicolas   François   <nicolas.francois@centra‐
       liens.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  <fhan‐
       trais@gmail.com>

       Cette traduction est une documentation libre ; veuillez vous  reporter  à  la  GNU General Public License
       version 3 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 à de‐
       bian-l10n-french@lists.debian.org.

Pages du manuel de Linux 6.03                   15 décembre 2022                    pthread_attr_setguardsize(3)