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

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