version 1.60, 2012/10/05 13:12:39
|
version 1.64, 2012/12/13 16:59:41
|
Line 237 liste_variables_par_feuilles(struct_proc
|
Line 237 liste_variables_par_feuilles(struct_proc
|
================================================================================ |
================================================================================ |
*/ |
*/ |
|
|
static inline struct_arbre_variables * |
struct_arbre_variables * |
allocation_noeud(struct_processus *s_etat_processus) |
allocation_noeud(struct_processus *s_etat_processus) |
{ |
{ |
struct_arbre_variables *objet; |
struct_arbre_variables *objet; |
Line 272 liberation_noeud(struct_processus *s_eta
|
Line 272 liberation_noeud(struct_processus *s_eta
|
return; |
return; |
} |
} |
|
|
static inline struct_arbre_variables ** |
struct_arbre_variables ** |
allocation_tableau_noeuds(struct_processus *s_etat_processus) |
allocation_tableau_noeuds(struct_processus *s_etat_processus) |
{ |
{ |
struct_arbre_variables **objet; |
struct_arbre_variables **objet; |
Line 427 ajout_variable(struct_processus *s_etat_
|
Line 427 ajout_variable(struct_processus *s_etat_
|
|
|
(*(*s_etat_processus).s_arbre_variables).feuille = NULL; |
(*(*s_etat_processus).s_arbre_variables).feuille = NULL; |
(*(*s_etat_processus).s_arbre_variables).feuille_statique = NULL; |
(*(*s_etat_processus).s_arbre_variables).feuille_statique = NULL; |
|
(*(*s_etat_processus).s_arbre_variables).feuille_partagee = NULL; |
(*(*s_etat_processus).s_arbre_variables).noeuds_utilises = 0; |
(*(*s_etat_processus).s_arbre_variables).noeuds_utilises = 0; |
(*(*s_etat_processus).s_arbre_variables).indice_tableau_pere = -1; |
(*(*s_etat_processus).s_arbre_variables).indice_tableau_pere = -1; |
(*(*s_etat_processus).s_arbre_variables).noeud_pere = NULL; |
(*(*s_etat_processus).s_arbre_variables).noeud_pere = NULL; |
|
INITIALISATION_MUTEX((*(*s_etat_processus).s_arbre_variables) |
|
.mutex_feuille_partagee); |
|
|
if (((*(*s_etat_processus).s_arbre_variables).noeuds = |
if (((*(*s_etat_processus).s_arbre_variables).noeuds = |
allocation_tableau_noeuds(s_etat_processus)) == NULL) |
allocation_tableau_noeuds(s_etat_processus)) == NULL) |
Line 480 ajout_variable(struct_processus *s_etat_
|
Line 483 ajout_variable(struct_processus *s_etat_
|
.pointeurs_caracteres_variables[*ptr]]).feuille_statique |
.pointeurs_caracteres_variables[*ptr]]).feuille_statique |
= NULL; |
= NULL; |
(*(*l_variable_courante).noeuds[(*s_etat_processus) |
(*(*l_variable_courante).noeuds[(*s_etat_processus) |
|
.pointeurs_caracteres_variables[*ptr]]).feuille_partagee |
|
= NULL; |
|
(*(*l_variable_courante).noeuds[(*s_etat_processus) |
.pointeurs_caracteres_variables[*ptr]]).noeuds_utilises = 0; |
.pointeurs_caracteres_variables[*ptr]]).noeuds_utilises = 0; |
|
INITIALISATION_MUTEX((*(*l_variable_courante).noeuds |
|
[(*s_etat_processus).pointeurs_caracteres_variables[*ptr]]) |
|
.mutex_feuille_partagee); |
|
|
// Le champ noeud_pere de la structure créée pointe sur |
// Le champ noeud_pere de la structure créée pointe sur |
// la structure parente et l'indice tableau_pere correspond à la |
// la structure parente et l'indice tableau_pere correspond à la |
Line 1297 retrait_variable(struct_processus *s_eta
|
Line 1306 retrait_variable(struct_processus *s_eta
|
.feuille = NULL; |
.feuille = NULL; |
|
|
while(((*s_arbre_courant).noeuds_utilises == 0) && |
while(((*s_arbre_courant).noeuds_utilises == 0) && |
((*s_arbre_courant).feuille_statique == NULL)) |
((*s_arbre_courant).feuille_statique == NULL) && |
|
((*s_arbre_courant).feuille_partagee == NULL)) |
{ |
{ |
s_arbre_a_supprimer = s_arbre_courant; |
s_arbre_a_supprimer = s_arbre_courant; |
s_arbre_courant = (*s_arbre_courant).noeud_pere; |
s_arbre_courant = (*s_arbre_courant).noeud_pere; |
Line 1712 liberation_arbre_variables(struct_proces
|
Line 1722 liberation_arbre_variables(struct_proces
|
free((*(*l_element_statique_courant).variable).nom); |
free((*(*l_element_statique_courant).variable).nom); |
liberation(s_etat_processus, (*(*l_element_statique_courant) |
liberation(s_etat_processus, (*(*l_element_statique_courant) |
.variable).objet); |
.variable).objet); |
|
free((*l_element_statique_courant).variable); |
|
free(l_element_statique_courant); |
|
|
l_element_statique_courant = l_element_statique_suivant; |
l_element_statique_courant = l_element_statique_suivant; |
} |
} |
Line 1956 copie_arbre_variables(struct_processus *
|
Line 1968 copie_arbre_variables(struct_processus *
|
struct_liste_variables_statiques *l_element_statique_courant; |
struct_liste_variables_statiques *l_element_statique_courant; |
|
|
struct_variable s_variable; |
struct_variable s_variable; |
|
struct_variable_statique s_variable_statique; |
|
|
unsigned char *ptr; |
unsigned char *ptr; |
|
|
Line 2179 copie_arbre_variables(struct_processus *
|
Line 2192 copie_arbre_variables(struct_processus *
|
ptr++; |
ptr++; |
} |
} |
|
|
|
// Il faut copier la variable pour la dissocier de la variable |
|
// restant dans le thread parent. |
|
|
|
s_variable_statique = (*(*l_element_statique_courant).variable); |
|
|
|
if (copie_objet(s_etat_processus, s_variable_statique.objet, 'P') |
|
== NULL) |
|
{ |
|
(*s_etat_processus).erreur_systeme = d_es_allocation_memoire; |
|
return; |
|
} |
|
|
|
if ((s_variable_statique.nom = malloc((strlen( |
|
(*(*l_element_statique_courant).variable).nom) + 1) * |
|
sizeof(unsigned char))) == NULL) |
|
{ |
|
(*s_etat_processus).erreur_systeme = d_es_allocation_memoire; |
|
return; |
|
} |
|
|
|
strcpy(s_variable_statique.nom, (*(*l_element_statique_courant) |
|
.variable).nom); |
|
|
if (creation_variable_statique(s_nouvel_etat_processus, |
if (creation_variable_statique(s_nouvel_etat_processus, |
(*l_element_statique_courant).variable) == d_erreur) |
&s_variable_statique) == d_erreur) |
{ |
{ |
(*s_etat_processus).erreur_systeme = d_es_allocation_memoire; |
(*s_etat_processus).erreur_systeme = d_es_allocation_memoire; |
return; |
return; |