Provided by: manpages-fr-dev_4.26.0-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(), pthread_attr_getguardsize()             │ Sécurité des threads │ MT-Safe │
       └──────────────────────────────────────────────────────────────────────┴──────────────────────┴─────────┘

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

Pages du manuel de Linux 6.9.1                     2 mai 2024                       pthread_attr_setguardsize(3)