Provided by: manpages-fr-dev_3.65d1p1-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.

ATTRIBUTS

   Multithreading (voir pthreads(7))
       Les  fonctions  pthread_attr_setguardsize()  et  pthread_attr_getguardsize()  sont sûres dans un contexte
       multithread.

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.65 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                                             14 avril 2014                     PTHREAD_ATTR_SETGUARDSIZE(3)