--- rpl/src/interruptions.c 2011/09/20 09:51:43 1.78 +++ rpl/src/interruptions.c 2011/09/20 14:36:29 1.79 @@ -324,8 +324,13 @@ verrouillage_threads_concurrents(struct_ == getpid()) && (pthread_equal((*((struct_thread *) (*l_element_courant).donnee)).tid, pthread_self()) == 0)) { - while(sem_wait(&((*(*((struct_thread *) (*l_element_courant) - .donnee)).s_etat_processus).semaphore_fork)) == -1) +# ifndef SEMAPHORES_NOMMES + while(sem_wait(&((*(*((struct_thread *) (*l_element_courant) + .donnee)).s_etat_processus).semaphore_fork)) == -1) +# else + while(sem_wait((*(*((struct_thread *) (*l_element_courant) + .donnee)).s_etat_processus).semaphore_fork) == -1) +# endif { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -351,9 +356,15 @@ deverrouillage_threads_concurrents(struc == getpid()) && (pthread_equal((*((struct_thread *) (*l_element_courant).donnee)).tid, pthread_self()) == 0)) { - if (sem_post(&((*(*((struct_thread *) - (*l_element_courant).donnee)).s_etat_processus) - .semaphore_fork)) != 0) +# ifndef SEMAPHORES_NOMMES + if (sem_post(&((*(*((struct_thread *) + (*l_element_courant).donnee)).s_etat_processus) + .semaphore_fork)) != 0) +# else + if (sem_post((*(*((struct_thread *) + (*l_element_courant).donnee)).s_etat_processus) + .semaphore_fork) != 0) +# endif { if (pthread_mutex_unlock(&mutex_liste_threads) != 0) { @@ -1109,8 +1120,13 @@ liberation_threads(struct_processus *s_e liberation_allocateur(s_etat_processus); - sem_post(&((*s_etat_processus).semaphore_fork)); - sem_destroy(&((*s_etat_processus).semaphore_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, getpid()); +# endif liberation_contexte_cas(s_etat_processus); free(s_etat_processus); @@ -1298,7 +1314,11 @@ verrouillage_gestionnaire_signaux(struct { int semaphore; +# ifndef SEMAPHORES_NOMMES if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) +# else + if (sem_post((*s_etat_processus).semaphore_fork) != 0) +# endif { BUG(1, uprintf("Lock error !\n")); return; @@ -1308,7 +1328,11 @@ verrouillage_gestionnaire_signaux(struct if (pthread_mutex_lock(&mutex_gestionnaires_signaux_atomique) != 0) { +# ifndef SEMAPHORES_NOMMES sem_wait(&((*s_etat_processus).semaphore_fork)); +# else + sem_wait((*s_etat_processus).semaphore_fork); +# endif BUG(1, uprintf("Unlock error !\n")); return; } @@ -1319,7 +1343,11 @@ verrouillage_gestionnaire_signaux(struct if (sem_post(semaphore_gestionnaires_signaux) == -1) # endif { +# ifndef SEMAPHORES_NOMMES sem_wait(&((*s_etat_processus).semaphore_fork)); +# else + sem_wait((*s_etat_processus).semaphore_fork); +# endif BUG(1, uprintf("Lock error !\n")); return; } @@ -1330,14 +1358,22 @@ verrouillage_gestionnaire_signaux(struct if (sem_getvalue(semaphore_gestionnaires_signaux, &semaphore) != 0) # endif { +# ifndef SEMAPHORES_NOMMES sem_wait(&((*s_etat_processus).semaphore_fork)); +# else + sem_wait((*s_etat_processus).semaphore_fork); +# endif BUG(1, uprintf("Lock error !\n")); return; } if (pthread_mutex_unlock(&mutex_gestionnaires_signaux_atomique) != 0) { +# ifndef SEMAPHORES_NOMMES sem_wait(&((*s_etat_processus).semaphore_fork)); +# else + sem_wait((*s_etat_processus).semaphore_fork); +# endif BUG(1, uprintf("Unlock error !\n")); return; } @@ -1370,7 +1406,11 @@ deverrouillage_gestionnaire_signaux(stru if (pthread_mutex_lock(&mutex_gestionnaires_signaux_atomique) == -1) { +# ifndef SEMAPHORES_NOMMES sem_wait(&((*s_etat_processus).semaphore_fork)); +# else + sem_wait((*s_etat_processus).semaphore_fork); +# endif BUG(1, uprintf("Unlock error !\n")); return; } @@ -1381,7 +1421,11 @@ deverrouillage_gestionnaire_signaux(stru if (sem_getvalue(semaphore_gestionnaires_signaux, &semaphore) != 0) # endif { +# ifndef SEMAPHORES_NOMMES sem_wait(&((*s_etat_processus).semaphore_fork)); +# else + sem_wait((*s_etat_processus).semaphore_fork); +# endif BUG(1, uprintf("Unlock error !\n")); return; } @@ -1394,7 +1438,11 @@ deverrouillage_gestionnaire_signaux(stru { if (errno != EINTR) { +# ifndef SEMAPHORES_NOMMES sem_wait(&((*s_etat_processus).semaphore_fork)); +# else + sem_wait((*s_etat_processus).semaphore_fork); +# endif BUG(1, uprintf("Unlock error !\n")); return; } @@ -1402,15 +1450,26 @@ deverrouillage_gestionnaire_signaux(stru if (pthread_mutex_unlock(&mutex_gestionnaires_signaux_atomique) != 0) { +# ifndef SEMAPHORES_NOMMES sem_wait(&((*s_etat_processus).semaphore_fork)); +# else + sem_wait((*s_etat_processus).semaphore_fork); +# endif BUG(1, uprintf("Unlock error !\n")); return; } +# ifndef SEMAPHORES_NOMMES while(sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) +# else + while(sem_wait((*s_etat_processus).semaphore_fork) != 0) +# endif { - BUG(1, uprintf("Unlock error !\n")); - return; + if (errno != EINTR) + { + BUG(1, uprintf("Unlock error !\n")); + return; + } } if (semaphore == 1)