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