--- rpl/src/interruptions.c 2011/09/19 17:33:17 1.75 +++ rpl/src/interruptions.c 2011/09/20 08:56:24 1.77 @@ -324,8 +324,8 @@ verrouillage_threads_concurrents(struct_ == getpid()) && (pthread_equal((*((struct_thread *) (*l_element_courant).donnee)).tid, pthread_self()) == 0)) { - if (pthread_mutex_lock(&((*(*((struct_thread *) (*l_element_courant) - .donnee)).s_etat_processus).mutex_fork)) == -1) + if (sem_wait(&((*(*((struct_thread *) (*l_element_courant) + .donnee)).s_etat_processus).semaphore_fork)) == -1) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -351,9 +351,9 @@ deverrouillage_threads_concurrents(struc == getpid()) && (pthread_equal((*((struct_thread *) (*l_element_courant).donnee)).tid, pthread_self()) == 0)) { - if (pthread_mutex_unlock(&((*(*((struct_thread *) + if (sem_post(&((*(*((struct_thread *) (*l_element_courant).donnee)).s_etat_processus) - .mutex_fork)) != 0) + .semaphore_fork)) != 0) { if (pthread_mutex_unlock(&mutex_liste_threads) != 0) { @@ -1109,8 +1109,8 @@ liberation_threads(struct_processus *s_e liberation_allocateur(s_etat_processus); - 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)); liberation_contexte_cas(s_etat_processus); free(s_etat_processus); @@ -1298,7 +1298,7 @@ verrouillage_gestionnaire_signaux(struct { int semaphore; - if (pthread_mutex_unlock(&((*s_etat_processus).mutex_fork)) != 0) + if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) { BUG(1, uprintf("Lock error !\n")); return; @@ -1308,7 +1308,7 @@ verrouillage_gestionnaire_signaux(struct if (pthread_mutex_lock(&mutex_gestionnaires_signaux_atomique) != 0) { - pthread_mutex_lock(&((*s_etat_processus).mutex_fork)); + sem_wait(&((*s_etat_processus).semaphore_fork)); BUG(1, uprintf("Unlock error !\n")); return; } @@ -1319,7 +1319,7 @@ verrouillage_gestionnaire_signaux(struct if (sem_post(semaphore_gestionnaires_signaux) == -1) # endif { - pthread_mutex_lock(&((*s_etat_processus).mutex_fork)); + sem_wait(&((*s_etat_processus).semaphore_fork)); BUG(1, uprintf("Lock error !\n")); return; } @@ -1330,14 +1330,14 @@ verrouillage_gestionnaire_signaux(struct if (sem_getvalue(semaphore_gestionnaires_signaux, &semaphore) != 0) # endif { - pthread_mutex_lock(&((*s_etat_processus).mutex_fork)); + sem_wait(&((*s_etat_processus).semaphore_fork)); BUG(1, uprintf("Lock error !\n")); return; } if (pthread_mutex_unlock(&mutex_gestionnaires_signaux_atomique) != 0) { - pthread_mutex_lock(&((*s_etat_processus).mutex_fork)); + sem_wait(&((*s_etat_processus).semaphore_fork)); BUG(1, uprintf("Unlock error !\n")); return; } @@ -1352,7 +1352,7 @@ verrouillage_gestionnaire_signaux(struct if (pthread_mutex_lock(&mutex_liste_threads) != 0) { - pthread_mutex_lock(&((*s_etat_processus).mutex_fork)); + sem_wait(&((*s_etat_processus).semaphore_fork)); BUG(1, uprintf("Lock error !\n")); return; } @@ -1370,7 +1370,7 @@ deverrouillage_gestionnaire_signaux(stru if (pthread_mutex_lock(&mutex_gestionnaires_signaux_atomique) == -1) { - pthread_mutex_lock(&((*s_etat_processus).mutex_fork)); + sem_wait(&((*s_etat_processus).semaphore_fork)); BUG(1, uprintf("Unlock error !\n")); return; } @@ -1381,7 +1381,7 @@ deverrouillage_gestionnaire_signaux(stru if (sem_getvalue(semaphore_gestionnaires_signaux, &semaphore) != 0) # endif { - pthread_mutex_lock(&((*s_etat_processus).mutex_fork)); + sem_wait(&((*s_etat_processus).semaphore_fork)); BUG(1, uprintf("Unlock error !\n")); return; } @@ -1394,7 +1394,7 @@ deverrouillage_gestionnaire_signaux(stru { if (errno != EINTR) { - pthread_mutex_lock(&((*s_etat_processus).mutex_fork)); + sem_wait(&((*s_etat_processus).semaphore_fork)); BUG(1, uprintf("Unlock error !\n")); return; } @@ -1402,12 +1402,12 @@ deverrouillage_gestionnaire_signaux(stru if (pthread_mutex_unlock(&mutex_gestionnaires_signaux_atomique) != 0) { - pthread_mutex_lock(&((*s_etat_processus).mutex_fork)); + sem_wait(&((*s_etat_processus).semaphore_fork)); BUG(1, uprintf("Unlock error !\n")); return; } - if (pthread_mutex_lock(&((*s_etat_processus).mutex_fork)) != 0) + if (sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) { BUG(1, uprintf("Unlock error !\n")); return; @@ -2394,7 +2394,6 @@ envoi_signal_processus(pid_t pid, enum s if (s_queue_signaux == NULL) { - uprintf("Paf !\n"); return(1); } @@ -2430,7 +2429,7 @@ envoi_signal_processus(pid_t pid, enum s // Le signal est envoyé depuis un processus distinct. # ifdef IPCS_SYSV - if ((nom = nom_segment(racine_segment, getpid())) == NULL) + if ((nom = nom_segment(racine_segment, pid)) == NULL) { return(1); } @@ -2549,8 +2548,6 @@ envoi_signal_processus(pid_t pid, enum s return(1); } # endif - - close(segment); } return(0); @@ -2734,7 +2731,7 @@ creation_queue_signaux(struct_processus return; } - if ((support = open(nom, O_RDWR | O_CREAT | O_EXCL | + if ((support = open(nom, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR)) == -1) { (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;