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