version 1.67, 2011/09/14 14:34:28
|
version 1.68, 2011/09/14 17:55:59
|
Line 1278 instruction_detach(struct_processus *s_e
|
Line 1278 instruction_detach(struct_processus *s_e
|
|
|
(*s_etat_processus).pointeur_signal_lecture = 0; |
(*s_etat_processus).pointeur_signal_lecture = 0; |
(*s_etat_processus).pointeur_signal_ecriture = 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).debug == d_vrai) |
if (((*s_etat_processus).type_debug & |
if (((*s_etat_processus).type_debug & |
Line 1298 instruction_detach(struct_processus *s_e
|
Line 1297 instruction_detach(struct_processus *s_e
|
fflush(stdout); |
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) |
if (close((*s_argument_thread).pipe_erreurs[0]) != 0) |
{ |
{ |
(*s_etat_processus).erreur_systeme = d_es_processus; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
Line 2814 instruction_detach(struct_processus *s_e
|
Line 2754 instruction_detach(struct_processus *s_e
|
pthread_mutex_destroy(&((*s_etat_processus).mutex_allocation)); |
pthread_mutex_destroy(&((*s_etat_processus).mutex_allocation)); |
pthread_mutex_destroy(&((*s_etat_processus).protection_liste_mutexes)); |
pthread_mutex_destroy(&((*s_etat_processus).protection_liste_mutexes)); |
|
|
pthread_key_delete(semaphore_fork_processus_courant); |
pthread_mutex_unlock(&((*s_etat_processus).mutex_fork)); |
|
pthread_mutex_destroy(&((*s_etat_processus).mutex_fork)); |
# 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 |
|
|
|
free((*s_etat_processus).localisation); |
free((*s_etat_processus).localisation); |
free(s_argument_thread); |
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(); |
clear_history(); |
|
|
destruction_queue_signaux(s_etat_processus); |
destruction_queue_signaux(s_etat_processus); |