--- rpl/src/rpl.h 2013/03/20 22:54:01 1.213 +++ rpl/src/rpl.h 2013/05/21 12:10:12 1.222 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.1.13 + RPL/2 (R) version 4.1.14 Copyright (C) 1989-2013 Dr. BERTRAND Joël This file is part of RPL/2. @@ -73,6 +73,7 @@ #include #include #include +#include #ifndef RPLARGS # include @@ -154,7 +155,6 @@ # endif # include -# include # include # include # include @@ -164,6 +164,7 @@ # include "readline.h" # include "termcap.h" # include "iconv.h" +# include "zlib.h" # include "openssl/evp.h" # ifndef OPENSSL_NO_MD2 @@ -1459,8 +1460,10 @@ typedef struct descripteur_thread int pipe_injections[2]; int pipe_nombre_injections[2]; int pipe_interruptions[2]; - int pipe_nombre_objets_attente[2]; - int pipe_nombre_interruptions_attente[2]; + // pipe_nombre_elements_attente == 0 => initialisation ou terminaison + // pipe_nombre_elements_attente == 1 => objet en attente + // pipe_nombre_elements_attente == 2 => interruption en attente + int pipe_nombre_elements_attente[2]; int pipe_acquittement[2]; volatile integer8 nombre_objets_dans_pipe; @@ -1806,7 +1809,7 @@ typedef struct arbre_variables_partagees do { \ pthread_mutexattr_t attributs_mutex; \ pthread_mutexattr_init(&attributs_mutex); \ - pthread_mutexattr_settype(&attributs_mutex, PTHREAD_MUTEX_NORMAL); \ + pthread_mutexattr_settype(&attributs_mutex, PTHREAD_MUTEX_RECURSIVE); \ pthread_mutex_init(&(mutex), &attributs_mutex); \ pthread_mutexattr_destroy(&attributs_mutex); \ } while(0) @@ -1823,6 +1826,7 @@ typedef struct tableau_variables logical1 variable_verrouillee; logical1 variable_masquee; + pthread_mutex_t *mutex; union_position_variable variable_statique; union_position_variable variable_partagee; } struct_tableau_variables; @@ -1943,8 +1947,7 @@ typedef struct processus int pipe_injections; int pipe_nombre_injections; int pipe_interruptions; - int pipe_nombre_objets_attente; - int pipe_nombre_interruptions_attente; + int pipe_nombre_elements_attente; int nombre_objets_envoyes_non_lus; int nombre_objets_injectes; @@ -2180,8 +2183,8 @@ typedef struct processus /* Traitement des erreurs */ int erreur_compilation; - int erreur_execution; - int erreur_systeme; + volatile int erreur_execution; + volatile int erreur_systeme; struct_objet *s_objet_errone; struct_objet *s_objet_erreur; @@ -2482,6 +2485,7 @@ void instruction_col_fleche(struct_proce void instruction_col_moins(struct_processus *s_etat_processus); void instruction_col_plus(struct_processus *s_etat_processus); void instruction_comb(struct_processus *s_etat_processus); +void instruction_compress(struct_processus *s_etat_processus); void instruction_con(struct_processus *s_etat_processus); void instruction_cond(struct_processus *s_etat_processus); void instruction_cont(struct_processus *s_etat_processus); @@ -2908,6 +2912,7 @@ void instruction_t_vers_l(struct_process void instruction_ucase(struct_processus *s_etat_processus); void instruction_uchol(struct_processus *s_etat_processus); +void instruction_uncompress(struct_processus *s_etat_processus); void instruction_unlock(struct_processus *s_etat_processus); void instruction_unprotect(struct_processus *s_etat_processus); void instruction_until(struct_processus *s_etat_processus);