Man page - pthread_attr_setguardsize(3)

Packages contains this manual

Available languages:

en fr ja ru ro

Manual

pthread_attr_setguardsize

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
ATTRIBUTS
STANDARDS
HISTORIQUE
NOTES
BOGUES
EXEMPLES
VOIR AUSSI
TRADUCTION

NOM

pthread_attr_setguardsize, pthread_attr_getguardsize - DĂ©finir ou obtenir la taille de garde d’un objet d’attributs de thread

BIBLIOTHÈQUE

BibliothĂšque de threads POSIX ( libpthread , -lpthread )

SYNOPSIS

#include <pthread.h>

int pthread_attr_setguardsize(pthread_attr_t * attr , size_t guardsize );
int pthread_attr_getguardsize(const pthread_attr_t *restrict
attr ,
size_t *restrict
guardsize );

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 succùs, ces fonctions renvoient 0 ; en cas d’erreur, elles renvoient un code d’erreur non nul.

ERREURS

POSIX.1 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).

ATTRIBUTS

Pour une explication des termes utilisés dans cette section, consulter attributes (7).

Image grohtml-3880982-1.png

STANDARDS

POSIX.1-2008.

HISTORIQUE

glibc 2.1. 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.

EXEMPLES

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)

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 <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Frédéric Hantrais <fhantrais@gmail.com>

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 à debian-l10n-french@lists.debian.org .