version 1.41, 2012/12/18 13:19:35
|
version 1.75, 2023/08/07 17:42:51
|
Line 1
|
Line 1
|
/* |
/* |
================================================================================ |
================================================================================ |
RPL/2 (R) version 4.1.12 |
RPL/2 (R) version 4.1.35 |
Copyright (C) 1989-2012 Dr. BERTRAND Joël |
Copyright (C) 1989-2023 Dr. BERTRAND Joël |
|
|
This file is part of RPL/2. |
This file is part of RPL/2. |
|
|
Line 84 allocation_tableau_noeuds_partages(struc
|
Line 84 allocation_tableau_noeuds_partages(struc
|
} |
} |
else |
else |
{ |
{ |
objet = malloc((*s_etat_processus).nombre_caracteres_variables |
objet = malloc(((size_t) (*s_etat_processus) |
|
.nombre_caracteres_variables) |
* sizeof(struct_arbre_variables_partagees *)); |
* sizeof(struct_arbre_variables_partagees *)); |
} |
} |
|
|
Line 448 recherche_variable_partagee(struct_proce
|
Line 449 recherche_variable_partagee(struct_proce
|
{ |
{ |
// Caractère hors de l'alphabet des variables |
// Caractère hors de l'alphabet des variables |
|
|
|
pthread_mutex_unlock(&((*l_variable_courante).mutex_feuille)); |
(*s_etat_processus).erreur_systeme = d_es_variable_introuvable; |
(*s_etat_processus).erreur_systeme = d_es_variable_introuvable; |
return(NULL); |
return(NULL); |
} |
} |
Line 455 recherche_variable_partagee(struct_proce
|
Line 457 recherche_variable_partagee(struct_proce
|
if ((*l_variable_courante).noeuds[pointeur] == NULL) |
if ((*l_variable_courante).noeuds[pointeur] == NULL) |
{ |
{ |
// Le chemin de la variable candidate n'existe pas. |
// Le chemin de la variable candidate n'existe pas. |
|
|
|
pthread_mutex_unlock(&((*l_variable_courante).mutex_feuille)); |
(*s_etat_processus).erreur_systeme = d_es_variable_introuvable; |
(*s_etat_processus).erreur_systeme = d_es_variable_introuvable; |
return(NULL); |
return(NULL); |
} |
} |
Line 462 recherche_variable_partagee(struct_proce
|
Line 466 recherche_variable_partagee(struct_proce
|
if (pthread_mutex_lock(&((*(*l_variable_courante).noeuds[pointeur]) |
if (pthread_mutex_lock(&((*(*l_variable_courante).noeuds[pointeur]) |
.mutex_feuille)) != 0) |
.mutex_feuille)) != 0) |
{ |
{ |
|
pthread_mutex_unlock(&((*l_variable_courante).mutex_feuille)); |
(*s_etat_processus).erreur_systeme = d_es_processus; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return(NULL); |
return(NULL); |
} |
} |
Line 478 recherche_variable_partagee(struct_proce
|
Line 483 recherche_variable_partagee(struct_proce
|
|
|
if ((*l_variable_courante).feuille != NULL) |
if ((*l_variable_courante).feuille != NULL) |
{ |
{ |
// Il existe au moins une variable statique du nom requis. |
// Il existe au moins une variable partagée du nom requis. |
|
|
l_element_courant = (*l_variable_courante).feuille; |
l_element_courant = (*l_variable_courante).feuille; |
|
|
Line 655 retrait_variable_partagee(struct_process
|
Line 660 retrait_variable_partagee(struct_process
|
liberation(s_etat_processus, (*(*l_element_a_supprimer).variable) |
liberation(s_etat_processus, (*(*l_element_a_supprimer).variable) |
.objet); |
.objet); |
free((*(*l_element_a_supprimer).variable).nom); |
free((*(*l_element_a_supprimer).variable).nom); |
|
pthread_mutex_unlock(&((*(*l_element_a_supprimer).variable).mutex)); |
|
pthread_mutex_destroy(&((*(*l_element_a_supprimer).variable).mutex)); |
free((*l_element_a_supprimer).variable); |
free((*l_element_a_supprimer).variable); |
free(l_element_a_supprimer); |
free(l_element_a_supprimer); |
|
|