--- rpl/src/instructions_d5.c 2011/09/14 14:34:28 1.67 +++ rpl/src/instructions_d5.c 2011/09/14 17:55:59 1.68 @@ -1278,7 +1278,6 @@ instruction_detach(struct_processus *s_e (*s_etat_processus).pointeur_signal_lecture = 0; (*s_etat_processus).pointeur_signal_ecriture = 0; - (*s_etat_processus).tid_courant = pthread_self(); if ((*s_etat_processus).debug == d_vrai) if (((*s_etat_processus).type_debug & @@ -1298,65 +1297,6 @@ instruction_detach(struct_processus *s_e fflush(stdout); } -# ifndef SEMAPHORES_NOMMES - sem_post(&semaphore_gestionnaires_signaux); - sem_destroy(&semaphore_gestionnaires_signaux); - sem_init(&semaphore_gestionnaires_signaux, 0, 0); -# else - sem_post(semaphore_gestionnaires_signaux); - sem_destroy2(semaphore_gestionnaires_signaux, - sem_gestionnaires_signaux); - - if ((semaphore_gestionnaires_signaux = sem_init2(0, - sem_gestionnaires_signaux)) == SEM_FAILED) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - } -# endif - -# ifndef SEMAPHORES_NOMMES - sem_post(&semaphore_liste_threads); - sem_destroy(&semaphore_liste_threads); - sem_init(&semaphore_liste_threads, 0, 1); -# else - sem_post(semaphore_liste_threads); - sem_destroy2(semaphore_liste_threads, sem_liste_threads); - - if ((semaphore_liste_threads = sem_init2(1, - sem_liste_threads)) == SEM_FAILED) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - } -# endif - -# ifndef SEMAPHORES_NOMMES - sem_destroy(&semaphore_gestionnaires_signaux_atomique); - sem_init(&semaphore_gestionnaires_signaux_atomique, 0, 1); - sem_trywait(&((*s_etat_processus).semaphore_fork)); -# else - sem_destroy2(semaphore_gestionnaires_signaux_atomique, - sem_gestionnaires_signaux_atomique); - - if ((semaphore_gestionnaires_signaux_atomique = sem_init2(1, - sem_gestionnaires_signaux_atomique)) == SEM_FAILED) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - } - - sem_trywait((*s_etat_processus).semaphore_fork); -# endif - -# ifndef SEMAPHORES_NOMMES - if (pthread_setspecific(semaphore_fork_processus_courant, - &((*s_etat_processus).semaphore_fork)) != 0) -# else - if (pthread_setspecific(semaphore_fork_processus_courant, - (*s_etat_processus).semaphore_fork) != 0) -# endif - { - (*s_etat_processus).erreur_systeme = d_es_processus; - } - if (close((*s_argument_thread).pipe_erreurs[0]) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; @@ -2814,33 +2754,12 @@ instruction_detach(struct_processus *s_e pthread_mutex_destroy(&((*s_etat_processus).mutex_allocation)); pthread_mutex_destroy(&((*s_etat_processus).protection_liste_mutexes)); - pthread_key_delete(semaphore_fork_processus_courant); - -# ifndef SEMAPHORES_NOMMES - sem_post(&((*s_etat_processus).semaphore_fork)); - sem_destroy(&((*s_etat_processus).semaphore_fork)); -# else - sem_post((*s_etat_processus).semaphore_fork); - sem_destroy2((*s_etat_processus).semaphore_fork, sem_fork); -# endif + pthread_mutex_unlock(&((*s_etat_processus).mutex_fork)); + pthread_mutex_destroy(&((*s_etat_processus).mutex_fork)); free((*s_etat_processus).localisation); free(s_argument_thread); -# ifndef SEMAPHORES_NOMMES - sem_destroy(&semaphore_liste_threads); - sem_post(&semaphore_gestionnaires_signaux); - sem_destroy(&semaphore_gestionnaires_signaux); - sem_destroy(&semaphore_gestionnaires_signaux_atomique); -# else - sem_destroy2(semaphore_liste_threads, sem_liste_threads); - sem_post(semaphore_gestionnaires_signaux); - sem_destroy2(semaphore_gestionnaires_signaux, - sem_gestionnaires_signaux); - sem_destroy2(semaphore_gestionnaires_signaux_atomique, - sem_gestionnaires_signaux_atomique); -# endif - clear_history(); destruction_queue_signaux(s_etat_processus);