--- rpl/src/rpl.h 2012/10/14 21:37:11 1.184 +++ rpl/src/rpl.h 2012/12/13 16:59:43 1.185 @@ -1553,19 +1553,9 @@ typedef struct variable_partage union_position_variable variable_partagee; struct_objet *objet; -} struct_variable_partagee; - -typedef struct table_variables_partagees -{ - pthread_mutex_t mutex; - volatile struct_variable_partagee *table; - - volatile unsigned long nombre_variables; - volatile unsigned long nombre_variables_allouees; - - unsigned long position_variable; -} struct_table_variables_partagees; + pthread_mutex_t mutex; +} struct_variable_partagee; #endif @@ -1748,8 +1738,20 @@ typedef struct arbre_variables struct liste_variables *feuille; struct liste_variables_statiques *feuille_statique; + struct liste_variables_partagees **feuille_partagee; + + pthread_mutex_t mutex_feuille_partagee; } struct_arbre_variables; +#define INITIALISATION_MUTEX(mutex) \ + do { \ + pthread_mutexattr_t attributs_mutex; \ + pthread_mutexattr_init(&attributs_mutex); \ + pthread_mutexattr_settype(&attributs_mutex, PTHREAD_MUTEX_NORMAL); \ + pthread_mutex_init(&(mutex), &attributs_mutex); \ + pthread_mutexattr_destroy(&attributs_mutex); \ + } while(0) + typedef struct tableau_variables { unsigned char origine; @@ -1793,6 +1795,15 @@ typedef struct liste_variables_statiques struct_arbre_variables *feuille; struct_variable_statique *variable; } struct_liste_variables_statiques; + +typedef struct liste_variables_partagees +{ + struct liste_variables_partagees *suivant; + struct liste_variables_partagees *precedent; + struct liste_variables_partagees *reference; + struct_arbre_variables *feuille; + struct_variable_partagee *variable; +} struct_liste_variables_partagees; #endif /* @@ -1912,14 +1923,15 @@ typedef struct processus struct_liste_variables *l_liste_variables_par_niveau; struct_liste_variables_statiques *l_liste_variables_statiques; - struct_table_variables_partagees - *s_liste_variables_partagees; + struct_liste_variables_partagees + *l_liste_variables_partagees; logical1 niveau_supprime; struct_variable *pointeur_variable_courante; struct_liste_variables *pointeur_feuille_courante; struct_variable_statique *pointeur_variable_statique_courante; + struct_variable_partagee *pointeur_variable_partagee_courante; int *pointeurs_caracteres_variables; int nombre_caracteres_variables;