--- rpl/src/instructions_d5.c 2017/06/28 09:20:33 1.157 +++ rpl/src/instructions_d5.c 2017/08/02 14:41:35 1.158 @@ -1092,14 +1092,14 @@ instruction_detach(struct_processus *s_e return; } + verrouillage_threads_concurrents(s_etat_processus); + if (pthread_mutex_lock(&mutex_liste_variables_partagees) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; } - verrouillage_threads_concurrents(s_etat_processus); - if (pthread_mutex_lock(&((*s_etat_processus).mutex_allocation_buffer)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; @@ -1322,9 +1322,7 @@ instruction_detach(struct_processus *s_e &attributs_mutex); pthread_mutexattr_destroy(&attributs_mutex); -#if 0 liberation_queue_signaux(s_etat_processus); -#endif creation_queue_signaux(s_etat_processus); routine_recursive = 0; @@ -1340,7 +1338,6 @@ instruction_detach(struct_processus *s_e (*s_etat_processus).erreur_systeme = d_es_processus; } -#if 0 close(pipe_initialisation_segment_signaux[0]); close(pipe_initialisation_segment_signaux[1]); @@ -1417,13 +1414,10 @@ instruction_detach(struct_processus *s_e free(l_element_courant); l_element_courant = l_element_suivant; } -#endif (*s_etat_processus).liste_mutexes = NULL; -#if 0 liberation_threads(s_etat_processus); -#endif insertion_thread(s_etat_processus, d_vrai); // Envoi d'une donnée pour signaler le démarrage du processus au thread @@ -1453,7 +1447,6 @@ instruction_detach(struct_processus *s_e exit(EXIT_FAILURE); } -#if 0 if (pthread_mutex_destroy(&mutex_sections_critiques) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; @@ -1472,7 +1465,6 @@ instruction_detach(struct_processus *s_e BUG(1, uprintf("Process management error line %d\n", __LINE__)); exit(EXIT_FAILURE); } -#endif pthread_mutexattr_init(&attributs_mutex); pthread_mutexattr_settype(&attributs_mutex, PTHREAD_MUTEX_RECURSIVE); @@ -1575,13 +1567,10 @@ instruction_detach(struct_processus *s_e if ((*s_etat_processus).evaluation_expression_compilee == 'N') { -#if 0 free((*s_etat_processus).instruction_courante); -#endif (*s_etat_processus).instruction_courante = NULL; } -#if 0 (*s_etat_processus).var_volatile_processus_pere = 0; (*s_etat_processus).var_volatile_processus_racine = 0; @@ -1598,20 +1587,16 @@ instruction_detach(struct_processus *s_e liberation(s_etat_processus, (*s_etat_processus).at_poke); (*s_etat_processus).at_poke = NULL; (*s_etat_processus).traitement_at_poke = 'N'; -#endif for(i = 0; i < d_NOMBRE_INTERRUPTIONS; i++) { -#if 0 liberation(s_etat_processus, (*s_etat_processus).corps_interruptions[i]); -#endif (*s_etat_processus).corps_interruptions[i] = NULL; (*s_etat_processus).masque_interruptions[i] = 'N'; (*s_etat_processus).queue_interruptions[i] = 0; -#if 0 l_element_courant = (*s_etat_processus) .pile_origine_interruptions[i]; @@ -1622,7 +1607,6 @@ instruction_detach(struct_processus *s_e free(l_element_courant); l_element_courant = l_element_suivant; } -#endif (*s_etat_processus).pile_origine_interruptions[i] = NULL; } @@ -1644,7 +1628,6 @@ instruction_detach(struct_processus *s_e scrutation_interruptions(s_etat_processus); } -#if 0 (*s_etat_processus).niveau_initial = (*s_etat_processus).niveau_courant; (*s_etat_processus).presence_pipes = d_vrai; (*s_etat_processus).debug_programme = d_faux; @@ -1667,23 +1650,18 @@ instruction_detach(struct_processus *s_e (*s_etat_processus).pid_erreur_processus_fils = getpid(); (*s_etat_processus).sections_critiques = 0; (*s_etat_processus).initialisation_scheduler = d_faux; -#endif -#if 0 if ((*s_etat_processus).profilage == d_vrai) { liberation_profil(s_etat_processus); } -#endif (*s_etat_processus).pile_profilage = NULL; -#if 0 if ((*s_etat_processus).generateur_aleatoire != NULL) { liberation_generateur_aleatoire(s_etat_processus); } -#endif (*s_etat_processus).generateur_aleatoire = NULL; @@ -1736,7 +1714,6 @@ instruction_detach(struct_processus *s_e printf("(*s_argument_thread2).nombre_references = %d\n", (int) (*s_argument_thread2).nombre_references)); -#if 0 if ((*s_argument_thread2).nombre_references == 0) { close((*s_argument_thread2).pipe_objets[0]); @@ -1761,7 +1738,6 @@ instruction_detach(struct_processus *s_e free((*(*l_element_courant).donnee).objet); free((*l_element_courant).donnee); } -#endif l_element_suivant = (*l_element_courant).suivant; free((struct_liste_chainee *) l_element_courant); @@ -1796,7 +1772,6 @@ instruction_detach(struct_processus *s_e * Initialisation de la pile système */ -#if 0 l_element_courant = (struct_liste_chainee *) (*s_etat_processus).l_base_pile_systeme; while(l_element_courant != NULL) @@ -1823,12 +1798,10 @@ instruction_detach(struct_processus *s_e l_element_courant = l_element_suivant; } -#endif (*s_etat_processus).l_base_pile_systeme = NULL; (*s_etat_processus).hauteur_pile_systeme = 0; -#if 0 empilement_pile_systeme(s_etat_processus); if ((*s_etat_processus).erreur_systeme != d_es) @@ -1851,9 +1824,7 @@ instruction_detach(struct_processus *s_e } (*(*s_etat_processus).l_base_pile_systeme).retour_definition = 'Y'; -#endif -#if 0 l_element_courant = (struct_liste_chainee *) (*s_etat_processus).s_marques; @@ -1866,7 +1837,6 @@ instruction_detach(struct_processus *s_e free((struct_marque *) l_element_courant); l_element_courant = l_element_suivant; } -#endif (*s_etat_processus).s_marques = NULL; @@ -1875,7 +1845,6 @@ instruction_detach(struct_processus *s_e * les variables dans le cas d'un programme compilé. */ -#if 0 empilement_pile_systeme(s_etat_processus); if ((*s_etat_processus).erreur_systeme != d_es) @@ -1898,13 +1867,11 @@ instruction_detach(struct_processus *s_e } (*(*s_etat_processus).l_base_pile_systeme).retour_definition = 'Y'; -#endif /* * Destruction des sorties graphiques et PostScript */ -#if 0 while((*s_etat_processus).fichiers_graphiques != NULL) { free((*(*s_etat_processus).fichiers_graphiques).nom); @@ -1926,7 +1893,6 @@ instruction_detach(struct_processus *s_e pclose((*s_etat_processus).entree_standard); (*s_etat_processus).entree_standard = NULL; } -#endif (*s_etat_processus).requete_nouveau_plan = d_vrai; (*s_etat_processus).mise_a_jour_trace_requise = d_faux; @@ -1941,7 +1907,6 @@ instruction_detach(struct_processus *s_e * Destruction des piles de fichiers */ -#if 0 l_element_courant = (*s_etat_processus).s_fichiers; while(l_element_courant != NULL) @@ -1996,7 +1961,6 @@ instruction_detach(struct_processus *s_e */ (*s_etat_processus).s_connecteurs_sql = NULL; -#endif if ((*s_etat_processus).debug == d_vrai) { @@ -2014,7 +1978,6 @@ instruction_detach(struct_processus *s_e } } -#if 0 if ((*s_etat_processus).erreur_systeme == d_es) { // Évite le warning variable s_copie might be clobbered by @@ -2119,9 +2082,7 @@ instruction_detach(struct_processus *s_e free(s); } -#endif -#if 0 for(i = 0; i < (*s_etat_processus).sections_critiques; i++) { pthread_mutex_unlock(&mutex_sections_critiques); @@ -2143,7 +2104,6 @@ instruction_detach(struct_processus *s_e { pthread_cancel((*s_etat_processus).thread_fusible); } -#endif caractere = 0; @@ -2248,7 +2208,6 @@ instruction_detach(struct_processus *s_e } } -#if 0 l_element_courant = (*s_etat_processus).s_fichiers; while(l_element_courant != NULL) @@ -2862,7 +2821,6 @@ instruction_detach(struct_processus *s_e liberation_profil(s_etat_processus); } -#endif attente.tv_sec = 0; attente.tv_nsec = GRANULARITE_us * 1000; @@ -2872,12 +2830,10 @@ instruction_detach(struct_processus *s_e INCR_GRANULARITE(attente.tv_nsec); } -#if 0 closelog(); retrait_thread(s_etat_processus); liberation_contexte_cas(s_etat_processus); -#endif destruction_queue_signaux(s_etat_processus); # ifndef SEMAPHORES_NOMMES @@ -2889,7 +2845,6 @@ instruction_detach(struct_processus *s_e pthread_self(), SEM_FORK); # endif -#if 0 clear_history(); close((*s_argument_thread).pipe_erreurs[1]); @@ -2923,7 +2878,6 @@ instruction_detach(struct_processus *s_e debug_memoire_verification(); analyse_post_mortem(); # endif -#endif exit(EXIT_SUCCESS); }