Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
FORUM LINUX FAQ LINUX TUTORIELS LINUX LIVRES LINUX LINUX TV UNIX GTK+ Qt APACHE

MAKECONTEXT

Section: Manuel du programmeur Linux (3)
Updated: 21 juillet 2003
Index


NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
NOTES
CONFORMITÉ
VOIR AUSSI
TRADUCTION

NOM

makecontext, swapcontext - Manipulation du contexte utilisateur.

SYNOPSIS

#include <ucontext.h>
void makecontext(ucontext_t *ucp, void *func(), int argc, ...);
int swapcontext (ucontext_t *oucp, ucontext_t *ucp);

DESCRIPTION

Dans un environnement de type SysV, on dispose du type ucontext_t défini dans <ucontext.h> et des quatre fonctions getcontext(), setcontext(), makecontext() et swapcontext() qui permettent, au niveau utilisateur, des permutations de contextes entre plusieurs threads de contrôle au sein d'un processus.
Pour le type et les deux premières fonctions, voir getcontext(2).
La fonction makecontext() modifie le contexte pointé par ucp ( qui a été obtenu par un appel à getcontext()). Avant d'appeler makecontext(), il faut allouer une nouvelle pile pour ce contexte, l'affectant à ucp->uc_stack, et définir un contexte successeur, l'affectant à ucp->uc_link. Lorsque ce contexte est activé par la suite (en utilisant setcontext() ou swapcontext()), alors, la fonction func est tout d'abord appelée avec les arguments spécifiés à la suite de argc (où argc doit préciser le nombre de ces arguments), et lorsque cette fonction s'achève, le contexte successeur est activé. Quand le pointeur sur le contexte successeur vaut NULL, le thread se termine.
La fonction swapcontext() sauvegarde le contexte actuel dans la structure pointée par oucp et active ensuite le contexte pointé par ucp.

VALEUR RENVOYÉE

En cas de succès, makecontext() renvoie 0 tandis que swapcontext() ne rend pas la main à l'appelant. (On peut toutefois revenir à l'appelant en cas d'activation de oucp. Dans un tel cas, swapcontext() se comporte comme si elle renvoyait 0.) En cas d'erreur, les deux fonctions renvoient -1 et positionnent errno de façon appropriée.

ERREURS

ENOMEM
Espace de pile disponible insuffisant.

NOTES

L'interprétation de ucp->uc_stack est exactement la même que pour sigaltstack(2), à savoir, cette structure contient l'adresse de départ et la longueur d'une zone mémoire destinée à être utilisée comme pile, et ce, sans considération sur le sens d'expansion de la pile. Il n'est donc pas nécessaire pour le programme utilisateur de se soucier de ce sens.

CONFORMITÉ

SUSv2, POSIX 1003.1-2001.

VOIR AUSSI

TRADUCTION

Stéphan Rafin, 2002.
Responsable bénévole de la rubrique Linux Professionnel : Olivier Van Hoof - Contacter par EMail :
Vos questions techniques : forum d'entraide Linux Professionnel - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.