--- rpl/src/rpl.c 2011/09/16 09:09:35 1.86 +++ rpl/src/rpl.c 2011/09/20 08:56:24 1.90 @@ -23,12 +23,6 @@ #define MAIN_RPL #include "rpl-conv.h" -#ifdef IPCS_SYSV -#ifndef OS2 - unsigned char *chemin_semaphores_SysV; -#endif -#endif - /* ================================================================================ @@ -118,7 +112,7 @@ rplinit(int argc, char *argv[], unsigned # ifndef SEMAPHORES_NOMMES sem_init(&semaphore_gestionnaires_signaux, 0, 0); # else - semaphore_gestionnaires_signaux = sem_init2(0, sem_gestionnaires_signaux); + semaphore_gestionnaires_signaux = sem_init2(0, getpid()); if (semaphore_gestionnaires_signaux == SEM_FAILED) { @@ -197,12 +191,7 @@ rplinit(int argc, char *argv[], unsigned &attributs_mutex); pthread_mutexattr_destroy(&attributs_mutex); - pthread_mutexattr_init(&attributs_mutex); - pthread_mutexattr_settype(&attributs_mutex, PTHREAD_MUTEX_NORMAL); - pthread_mutex_init(&((*s_etat_processus).mutex_fork), - &attributs_mutex); - pthread_mutexattr_destroy(&attributs_mutex); - pthread_mutex_lock(&((*s_etat_processus).mutex_fork)); + sem_init(&((*s_etat_processus).semaphore_fork), 0, 0); pthread_mutexattr_init(&attributs_mutex); pthread_mutexattr_settype(&attributs_mutex, PTHREAD_MUTEX_NORMAL); @@ -225,13 +214,6 @@ rplinit(int argc, char *argv[], unsigned (*s_etat_processus).chemin_fichiers_temporaires = recherche_chemin_fichiers_temporaires(s_etat_processus); -# ifdef IPCS_SYSV -# ifndef OS2 - chemin_semaphores_SysV = - (*s_etat_processus).chemin_fichiers_temporaires; -# endif -# endif - insertion_thread(s_etat_processus, d_vrai); creation_queue_signaux(s_etat_processus); @@ -2639,8 +2621,6 @@ rplinit(int argc, char *argv[], unsigned lancement_daemon(s_etat_processus); } -// A FIXER -// création signaux if (option_p == d_faux) { if (setjmp(contexte_initial) == 0) @@ -2683,8 +2663,6 @@ rplinit(int argc, char *argv[], unsigned } } } -// A FIXER -// destruction signaux } liberation(s_etat_processus, (*s_etat_processus).at_exit); @@ -3491,8 +3469,8 @@ rplinit(int argc, char *argv[], unsigned pthread_mutex_destroy(&((*s_etat_processus).mutex)); pthread_mutex_destroy(&((*s_etat_processus).mutex_allocation)); - pthread_mutex_unlock(&((*s_etat_processus).mutex_fork)); - pthread_mutex_destroy(&((*s_etat_processus).mutex_fork)); + sem_post(&((*s_etat_processus).semaphore_fork)); + sem_destroy(&((*s_etat_processus).semaphore_fork)); free((*s_etat_processus).localisation); @@ -3504,7 +3482,7 @@ rplinit(int argc, char *argv[], unsigned sem_destroy(&semaphore_gestionnaires_signaux); # else sem_post(semaphore_gestionnaires_signaux); - sem_destroy2(semaphore_gestionnaires_signaux, sem_gestionnaires_signaux); + sem_destroy2(semaphore_gestionnaires_signaux, getpid()); # endif destruction_queue_signaux(s_etat_processus);