--- rpl/src/instructions_s1.c 2011/09/14 17:55:59 1.37 +++ rpl/src/instructions_s1.c 2011/09/20 08:56:23 1.39 @@ -3403,9 +3403,6 @@ instruction_syseval(struct_processus *s_ pid_t pid; - sigset_t oldset; - sigset_t set; - ssize_t longueur_ecriture; struct_liste_chainee *l_element_courant; @@ -3702,16 +3699,10 @@ instruction_syseval(struct_processus *s_ fflush(NULL); - sigfillset(&set); - pthread_sigmask(SIG_BLOCK, &set, &oldset); - verrouillage_threads_concurrents(s_etat_processus); pid = fork(); deverrouillage_threads_concurrents(s_etat_processus); - pthread_sigmask(SIG_SETMASK, &oldset, NULL); - sigpending(&set); - if (pid < 0) { if (close(pipes_entree[0]) != 0) @@ -3867,8 +3858,7 @@ instruction_syseval(struct_processus *s_ longueur_ecriture = strlen((unsigned char *) (*(*l_element_courant).donnee).objet); - if (pthread_mutex_unlock(&((*s_etat_processus).mutex_fork)) - != 0) + if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -3879,8 +3869,8 @@ instruction_syseval(struct_processus *s_ (*(*l_element_courant).donnee).objet, longueur_ecriture) != longueur_ecriture) { - while(pthread_mutex_lock(&((*s_etat_processus) - .mutex_fork)) != 0) + while(sem_wait(&((*s_etat_processus) + .semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; @@ -3893,8 +3883,8 @@ instruction_syseval(struct_processus *s_ return; } - if (pthread_mutex_unlock(&((*s_etat_processus) - .mutex_fork)) != 0) + if (sem_post(&((*s_etat_processus) + .semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -3904,8 +3894,8 @@ instruction_syseval(struct_processus *s_ while(write_atomic(s_etat_processus, pipes_entree[1], "\n", 1) != 1) { - if (pthread_mutex_lock(&((*s_etat_processus) - .mutex_fork)) != 0) + if (sem_wait(&((*s_etat_processus) + .semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; @@ -3918,16 +3908,15 @@ instruction_syseval(struct_processus *s_ return; } - if (pthread_mutex_unlock(&((*s_etat_processus) - .mutex_fork)) != 0) + if (sem_post(&((*s_etat_processus) + .semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; } } - if (pthread_mutex_lock(&((*s_etat_processus).mutex_fork)) - != 0) + if (sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -3954,8 +3943,7 @@ instruction_syseval(struct_processus *s_ * Récupération de la valeur de retour du processus détaché */ - if (pthread_mutex_unlock(&((*s_etat_processus).mutex_fork)) - != 0) + if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -3963,8 +3951,7 @@ instruction_syseval(struct_processus *s_ if (waitpid(pid, &status, 0) == -1) { - if (pthread_mutex_lock(&((*s_etat_processus).mutex_fork)) - != 0) + if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -3974,7 +3961,7 @@ instruction_syseval(struct_processus *s_ return; } - if (pthread_mutex_lock(&((*s_etat_processus).mutex_fork)) != 0) + if (sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -3992,7 +3979,7 @@ instruction_syseval(struct_processus *s_ return; } - if (pthread_mutex_unlock(&((*s_etat_processus).mutex_fork)) != 0) + if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -4002,7 +3989,7 @@ instruction_syseval(struct_processus *s_ pipes_sortie[0], &(tampon[pointeur]), longueur_lecture)) > 0) { - while(pthread_mutex_lock(&((*s_etat_processus).mutex_fork)) + while(sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; @@ -4022,7 +4009,7 @@ instruction_syseval(struct_processus *s_ return; } - if (pthread_mutex_unlock(&((*s_etat_processus).mutex_fork)) + if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; @@ -4030,7 +4017,7 @@ instruction_syseval(struct_processus *s_ } } - if (pthread_mutex_lock(&((*s_etat_processus).mutex_fork)) != 0) + if (sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -4175,7 +4162,7 @@ instruction_syseval(struct_processus *s_ return; } - if (pthread_mutex_unlock(&((*s_etat_processus).mutex_fork)) != 0) + if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -4192,7 +4179,7 @@ instruction_syseval(struct_processus *s_ &((*s_etat_processus).l_base_pile), s_objet_resultat) == d_erreur) { - if (pthread_mutex_lock(&((*s_etat_processus).mutex_fork)) != 0) + if (sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -4208,7 +4195,7 @@ instruction_syseval(struct_processus *s_ return; } - if (pthread_mutex_lock(&((*s_etat_processus).mutex_fork)) != 0) + if (sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return;