Loading

NOM

       pthread_attr_setstack,  pthread_attr_getstack  - Définir ou obtenir les
       attributs de pile d’un objet regroupant les attributs de thread

SYNOPSIS

       #include <pthread.h>

       int pthread_attr_setstack(pthread_attr_t *attr,
                                 void *stackaddr, size_t stacksize);
       int pthread_attr_getstack(pthread_attr_t *attr,
                                 void **stackaddr, size_t *stacksize);

       Compilez et effectuez l’édition des liens avec l’option -pthread.

   Exigences de  macros  de  test  de  fonctionnalités  pour  la  glibc  (voir
   feature_test_macros(7)) :

       pthread_attr_getstack(), pthread_attr_setstack() :
       _POSIX_C_SOURCE>= 200112L || _XOPEN_SOURCE >= 600

       La fonction pthread_attr_setstack() définit l’adresse et la  taille  de
       la  pile  dans  l’objet  regroupant les attributs de thread auquel attr
       fait référence,  à  partir  des  valeurs  indiquées  par  stackaddr  et
       stacksize  respectivement.  Ces  attributs  indique l’emplacement et la
       taille de la pile qui doit être utilisée par un thread qui est créé  en
       utilisant attr.

       stackaddr  devrait  pointer  vers  l’octet adressable d’adresse la plus
       basse d’un tampon de stacksize octets, alloué par l’appelant. Les pages
       du tampon alloué devraient être accessibles en lecture et écriture.

       La  fonction  pthread_attr_getstack()  renvoie, respectivement dans les
       tampons pointé par stackaddr et stacksize, l’adresse et la taille de la
       pile  d’un  objet  regroupant  les 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

       pthread_attr_setstack() peut échouer avec les erreurs suivantes :

       EINVAL stacksize  est inférieur à PTHREAD_STACK_MIN (16384) octets. Sur
              certains systèmes, cette erreur peut également  se  produire  si
              stackaddr    ou    stackaddr + stacksize    n’est   pas   aligné
              correctement.

       POSIX.1-2001 documente également une erreur EACCES si la zone  de  pile
       décrite  par  stackaddr et stacksize n’est pas accessible en lecture ou
       écriture par l’appelant.

VERSIONS

       Ces fonctions sont fournies par la glibc depuis la version 2.1.

CONFORMITÉ

       POSIX.1-2001.

NOTES

       Ces fonctions sont fournies pour les applications qui  doivent  assurer
       que la pile d’un thread se trouve à un emplacement particulier. Pour la
       plupart des applications, ce n’est pas nécessaire, et l’utilisation  de
       cette       fonction      devrait      être      évitée.      (Utilisez
       pthread_attr_setstacksize(3) si une application a  juste  besoin  d’une
       pile de taille différente de la taille par défaut.)

       Quand  une  application  utilise pthread_attr_setstack(), elle prend la
       responsabilité d’allouer la pile. Si une taille de garde a été  définie
       en  utilisant  pthread_attr_setguardsize(3), elle est ignorée. Si c’est
       nécessaire, l’application est responsable de l’allocation d’une zone de
       protection  (une  page  ou  plus protégées en lecture et écriture) pour
       prendre en charge la possibilité d’un débordement de pile.

       L’adresse indiquée par stackaddr devrait  être  alignée  correctement :
       pour  une  compatibilité  complète, il faut l’aligner sur une limite de
       page (sysconf(_SC_PAGESIZE)). posix_memalign(3) peut  être  utile  pour
       l’allocation.  stacksize devrait probablement aussi être un multiple de
       la taille des pages système.

       Si attr est utilisé pour créer plusieurs threads, alors l’appelant doit
       changer  l’attribut  de  l’adresse  de  la  pile  entre  les  appels  à
       pthread_create(3) ; sinon, les threads vont chercher à utiliser la même
       zone mémoire pour leurs piles, ce qui ne pourra que créer du chaos.

EXEMPLE

       Voir pthread_attr_init(3).

VOIR AUSSI

       mmap(2),    mprotect(2),    posix_memalign(3),    pthread_attr_init(3),
       pthread_attr_setguardsize(3),             pthread_attr_setstackaddr(3),
       pthread_attr_setstacksize(3), pthread_create(3), pthreads(7)

COLOPHON

       Cette  page  fait  partie  de  la  publication 3.23 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

       Cette page de manuel a  été  traduite  et  est  maintenue  par  Nicolas
       François  <nicolas.francois@centraliens.net> et l’équipe francophone de
       traduction de Debian.

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