NOM

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

BIBLIOTHÈQUE

Bibliothèque de threads POSIX ( libpthread, -lpthread)

SYNOPSIS

#include <pthread.h>
int pthread_attr_setstack(pthread_attr_t *attr,
                          void stackaddr[.stacksize],
                          size_t stacksize);
int pthread_attr_getstack(const pthread_attr_t *restrict attr,
                          void **restrict stackaddr,
                          size_t *restrict stacksize);
Exigences de macros de test de fonctionnalités pour la glibc (consulter feature_test_macros(7)) :
pthread_attr_getstack(), pthread_attr_setstack() :
    _POSIX_C_SOURCE >= 200112L

DESCRIPTION

La fonction pthread_attr_setstack() définit l'adresse et la taille de la pile dans l'objet d'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 d'attributs de thread auquel attr fait référence.

VALEUR RENVOYÉE

En cas de succès, ces fonctions renvoient 0 ; en cas d'erreur, elles renvoient un code d'erreur non nul.

ERREURS

pthread_attr_setstack() peut échouer avec les erreurs suivantes :
EINVAL
stacksize is less than PTHREAD_STACK_MIN (16384) bytes. On some systems, this error may also occur if stackaddr or stackaddr + stacksize is not suitably aligned.
POSIX.1 also documents an EACCES error if the stack area described by stackaddr and stacksize is not both readable and writable by the caller.

VERSIONS

These functions are provided since glibc 2.2.

ATTRIBUTS

Pour une explication des termes utilisés dans cette section, consulter attributes(7).
Interface Attribut Valeur
pthread_attr_setstack(), pthread_attr_getstack() Sécurité des threads MT-Safe
 

STANDARDS

POSIX.1-2001, POSIX.1-2008.

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.

EXEMPLES

Consultez 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)

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <[email protected]>, Thierry Vignaud <[email protected]>, François Micaux, Alain Portal <[email protected]>, Jean-Philippe Guérard <[email protected]>, Jean-Luc Coulon (f5ibh) <[email protected]>, Julien Cristau <[email protected]>, Thomas Huriaux <[email protected]>, Nicolas François <[email protected]>, Florentin Duneau <[email protected]>, Simon Paillard <[email protected]>, Denis Barbier <[email protected]>, David Prévot <[email protected]> et Frédéric Hantrais <[email protected]>
Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à [email protected]