version 1.51, 2011/06/21 07:45:27
|
version 1.61, 2011/08/30 14:19:28
|
Line 1
|
Line 1
|
/* |
/* |
================================================================================ |
================================================================================ |
RPL/2 (R) version 4.1.0.prerelease.1 |
RPL/2 (R) version 4.1.3 |
Copyright (C) 1989-2011 Dr. BERTRAND Joël |
Copyright (C) 1989-2011 Dr. BERTRAND Joël |
|
|
This file is part of RPL/2. |
This file is part of RPL/2. |
Line 803 liberation_threads(struct_processus *s_e
|
Line 803 liberation_threads(struct_processus *s_e
|
} |
} |
} |
} |
|
|
#if 0 |
liberation_arbre_variables(s_etat_processus, |
for(i = 0; i < (*s_etat_processus).nombre_variables; i++) |
(*s_etat_processus).s_arbre_variables, d_faux); |
{ |
|
pthread_mutex_trylock(&((*(*s_etat_processus) |
|
.s_liste_variables[i].objet).mutex)); |
|
pthread_mutex_unlock(&((*(*s_etat_processus) |
|
.s_liste_variables[i].objet).mutex)); |
|
|
|
// Les variables de niveau 0 sont des définitions qui |
|
// ne sont pas copiées entre threads. |
|
if ((*s_etat_processus).s_liste_variables[i].niveau > 0) |
|
{ |
|
liberation(s_etat_processus, |
|
(*s_etat_processus).s_liste_variables[i].objet); |
|
} |
|
|
|
free((*s_etat_processus).s_liste_variables[i].nom); |
|
} |
|
|
|
free((*s_etat_processus).s_liste_variables); |
|
#endif |
|
|
|
for(i = 0; i < (*s_etat_processus).nombre_variables_statiques; i++) |
for(i = 0; i < (*s_etat_processus).nombre_variables_statiques; i++) |
{ |
{ |
Line 1005 liberation_threads(struct_processus *s_e
|
Line 986 liberation_threads(struct_processus *s_e
|
element_courant = element_suivant; |
element_courant = element_suivant; |
} |
} |
|
|
|
element_courant = (*s_etat_processus).l_base_pile_undo; |
|
while(element_courant != NULL) |
|
{ |
|
element_suivant = (*((struct_liste_chainee *) |
|
element_courant)).suivant; |
|
|
|
pthread_mutex_trylock(&((*(*((struct_liste_chainee *) |
|
element_courant)).donnee).mutex)); |
|
pthread_mutex_unlock(&((*(*((struct_liste_chainee *) |
|
element_courant)).donnee).mutex)); |
|
liberation(s_etat_processus, |
|
(*((struct_liste_chainee *) element_courant)).donnee); |
|
free(element_courant); |
|
|
|
element_courant = element_suivant; |
|
} |
|
|
element_courant = (*s_etat_processus).l_base_pile_systeme; |
element_courant = (*s_etat_processus).l_base_pile_systeme; |
while(element_courant != NULL) |
while(element_courant != NULL) |
{ |
{ |
Line 1337 liberation_threads(struct_processus *s_e
|
Line 1335 liberation_threads(struct_processus *s_e
|
sem_destroy2((*s_etat_processus).semaphore_fork, sem_fork); |
sem_destroy2((*s_etat_processus).semaphore_fork, sem_fork); |
# endif |
# endif |
|
|
|
liberation_contexte_cas(s_etat_processus); |
free(s_etat_processus); |
free(s_etat_processus); |
|
|
s_etat_processus = candidat; |
s_etat_processus = candidat; |