version 1.149, 2016/03/22 19:03:36
|
version 1.152, 2016/07/20 16:24:29
|
Line 1288 instruction_detach(struct_processus *s_e
|
Line 1288 instruction_detach(struct_processus *s_e
|
* Processus fils |
* Processus fils |
*/ |
*/ |
|
|
|
// EPERM |
pthread_mutex_destroy(&mutex_liste_variables_partagees); |
pthread_mutex_destroy(&mutex_liste_variables_partagees); |
pthread_mutex_destroy(&mutex_liste_threads); |
pthread_mutex_destroy(&mutex_liste_threads); |
|
|
Line 2805 instruction_detach(struct_processus *s_e
|
Line 2806 instruction_detach(struct_processus *s_e
|
liberation_profil(s_etat_processus); |
liberation_profil(s_etat_processus); |
} |
} |
|
|
closelog(); |
attente.tv_sec = 0; |
|
attente.tv_nsec = GRANULARITE_us * 1000; |
|
|
close((*s_argument_thread).pipe_erreurs[1]); |
while(nombre_thread_surveillance_processus != 0) |
close((*s_argument_thread).pipe_interruptions[1]); |
{ |
close((*s_argument_thread).pipe_nombre_elements_attente[1]); |
nanosleep(&attente, NULL); |
close((*s_argument_thread).pipe_objets[1]); |
INCR_GRANULARITE(attente.tv_nsec); |
close((*s_argument_thread).pipe_injections[0]); |
} |
close((*s_argument_thread).pipe_nombre_injections[0]); |
|
close((*s_argument_thread).pipe_acquittement[0]); |
closelog(); |
|
|
retrait_thread(s_etat_processus); |
retrait_thread(s_etat_processus); |
|
liberation_contexte_cas(s_etat_processus); |
|
destruction_queue_signaux(s_etat_processus); |
|
|
# ifndef SEMAPHORES_NOMMES |
# ifndef SEMAPHORES_NOMMES |
sem_post(&((*s_etat_processus).semaphore_fork)); |
sem_post(&((*s_etat_processus).semaphore_fork)); |
Line 2828 instruction_detach(struct_processus *s_e
|
Line 2832 instruction_detach(struct_processus *s_e
|
|
|
clear_history(); |
clear_history(); |
|
|
liberation_contexte_cas(s_etat_processus); |
close((*s_argument_thread).pipe_erreurs[1]); |
destruction_queue_signaux(s_etat_processus); |
close((*s_argument_thread).pipe_interruptions[1]); |
|
close((*s_argument_thread).pipe_nombre_elements_attente[1]); |
|
close((*s_argument_thread).pipe_objets[1]); |
|
close((*s_argument_thread).pipe_injections[0]); |
|
close((*s_argument_thread).pipe_nombre_injections[0]); |
|
close((*s_argument_thread).pipe_acquittement[0]); |
|
|
free((*s_etat_processus).localisation); |
free((*s_etat_processus).localisation); |
free((*s_etat_processus).chemin_fichiers_temporaires); |
free((*s_etat_processus).chemin_fichiers_temporaires); |
Line 2838 instruction_detach(struct_processus *s_e
|
Line 2847 instruction_detach(struct_processus *s_e
|
liberation_allocateur(s_etat_processus); |
liberation_allocateur(s_etat_processus); |
liberation_allocateur_buffer(s_etat_processus); |
liberation_allocateur_buffer(s_etat_processus); |
|
|
attente.tv_sec = 0; |
|
attente.tv_nsec = GRANULARITE_us * 1000; |
|
|
|
while(nombre_thread_surveillance_processus != 0) |
|
{ |
|
nanosleep(&attente, NULL); |
|
INCR_GRANULARITE(attente.tv_nsec); |
|
} |
|
|
|
pthread_mutex_destroy(&((*s_etat_processus).mutex_pile_processus)); |
pthread_mutex_destroy(&((*s_etat_processus).mutex_pile_processus)); |
pthread_mutex_destroy(&((*s_etat_processus).mutex_allocation)); |
pthread_mutex_destroy(&((*s_etat_processus).mutex_allocation)); |
pthread_mutex_destroy(&((*s_etat_processus).mutex_interruptions)); |
pthread_mutex_destroy(&((*s_etat_processus).mutex_interruptions)); |
Line 2854 instruction_detach(struct_processus *s_e
|
Line 2854 instruction_detach(struct_processus *s_e
|
pthread_mutex_destroy(&((*s_etat_processus).protection_liste_mutexes)); |
pthread_mutex_destroy(&((*s_etat_processus).protection_liste_mutexes)); |
pthread_mutex_destroy(&((*s_etat_processus).mutex_allocation_buffer)); |
pthread_mutex_destroy(&((*s_etat_processus).mutex_allocation_buffer)); |
pthread_mutex_destroy(&mutex_sections_critiques); |
pthread_mutex_destroy(&mutex_sections_critiques); |
|
pthread_mutex_destroy(&mutex_liste_variables_partagees); |
|
pthread_mutex_destroy(&mutex_liste_threads); |
|
|
sys_free(s_etat_processus); |
sys_free(s_etat_processus); |
|
|