Sous-routine pthread_attr_setstackaddr

Objectif

Définit la valeur de l'attribut stackaddr d'un objet d'attributs d'unité d'exécution.

Bibliothèque

Bibliothèque d'unités d'exécution (libpthreads.a)

Syntaxe

#include <pthread.h>

int pthread_attr_setstackaddr (attr, stackaddr)
pthread_attr_t *attr;
void *stackaddr;

Descriptif

La sous-routine pthread_attr_setstackaddr définit la valeur de l'attribut stackaddr de l'objet d'attributs d'unité d'exécution attr. Cet attribut indique l'adresse de pile d'une unité d'exécution créée avec cet objet d'attributs.

Remarque: Le fichier d'en-tête pthread.h doit être le premier fichier inclus de chaque fichier source utilisant la bibliothèque d'unités d'exécution. Sinon, l'indicateur de compilation -D_THREAD_SAFE doit être utilisé ou le compilateur cc_r doit être utilisé. Dans ce cas, l'indicateur est automatiquement défini.
Une mise à disposition a été effectuée dans libpthreadspour créer des pages de garde pour la pile d'utilisateurs en interne. Il est utilisé uniquement à des fins de débogage. Par défaut, il est désactivé et peut être appelé en exportant la variable d'environnement suivante:
AIXTHREAD_GUARDPAGES_FOR_USER_STACK=n (Where n is the decimal number of guard pages.)
Remarque: même si elle est exportée, les pages de garde ne seront construites que si les attributs stackaddr et stacksize ont été définis par l'appelant pour l'unité d'exécution. En outre, les pages de garde et les pages d'alignement seront créées à partir de la pile de l'utilisateur (ce qui réduira la taille de la pile). Si la nouvelle taille de pile après la création de pages de garde est inférieure à la taille de pile minimale (PTHREAD_STACK_MIN), les pages de garde ne seront pas construites.

Paramètres

Article Descriptif
attr Indique l'objet d'attributs d'unité d'exécution.
adr_pile Indique l'adresse de pile à définir. C'est un pointeur vide. L'adresse à transmettre n'est pas le début de l'adresse générée par malloc mais le début de la pile. Par exemple :
       stackaddr = malloc(stacksize);
       pthread_attr_setstackaddr(&thread, stackaddr + stacksize);

Valeurs renvoyées

Une fois l'opération terminée, la valeur 0 est renvoyée. Sinon, un code d'erreur est renvoyé.

Codes d'erreur

La sous-routine pthread_attr_setstackaddr échoue si la condition suivante est vérifiée:

Article Descriptif
EINVAL Le paramètre attr n'est pas valide.
ENOSYS L'option POSIX d'adresse de pile n'est pas implémentée.