--- rpl/src/instructions_r4.c 2011/09/14 17:55:59 1.41 +++ rpl/src/instructions_r4.c 2011/09/20 14:36:29 1.44 @@ -2048,8 +2048,11 @@ instruction_read(struct_processus *s_eta return; } - if (pthread_mutex_unlock(&((*s_etat_processus).mutex_fork)) - != 0) +# ifndef SEMAPHORES_NOMMES + if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) +# else + if (sem_post((*s_etat_processus).semaphore_fork) != 0) +# endif { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -2109,8 +2112,13 @@ instruction_read(struct_processus *s_eta free(tampon_lecture); liberation(s_etat_processus, s_objet_argument_1); - while(pthread_mutex_lock(&((*s_etat_processus) - .mutex_fork)) != 0) +# ifndef SEMAPHORES_NOMMES + while(sem_wait(&((*s_etat_processus) + .semaphore_fork)) != 0) +# else + while(sem_wait((*s_etat_processus) + .semaphore_fork) != 0) +# endif { (*s_etat_processus).erreur_systeme = d_es_processus; @@ -2137,10 +2145,17 @@ instruction_read(struct_processus *s_eta } } - if (pthread_mutex_lock(&((*s_etat_processus).mutex_fork)) != 0) +# ifndef SEMAPHORES_NOMMES + while(sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) +# else + while(sem_wait((*s_etat_processus).semaphore_fork) != 0) +# endif { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; + if (errno == EINTR) + { + (*s_etat_processus).erreur_systeme = d_es_processus; + return; + } } if ((*s_etat_processus).var_volatile_requete_arret == -1) @@ -2536,8 +2551,11 @@ instruction_read(struct_processus *s_eta return; } - if (pthread_mutex_unlock(&((*s_etat_processus).mutex_fork)) - != 0) +# ifndef SEMAPHORES_NOMMES + if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) +# else + if (sem_post((*s_etat_processus).semaphore_fork) != 0) +# endif { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -2596,12 +2614,20 @@ instruction_read(struct_processus *s_eta free(tampon_lecture); liberation(s_etat_processus, s_objet_argument_1); - if (pthread_mutex_lock(&((*s_etat_processus) - .mutex_fork)) != 0) +# ifndef SEMAPHORES_NOMMES + while(sem_wait(&((*s_etat_processus) + .semaphore_fork)) != 0) +# else + while(sem_wait((*s_etat_processus) + .semaphore_fork) != 0) +# endif { - (*s_etat_processus).erreur_systeme = - d_es_processus; - return; + if (errno != EINTR) + { + (*s_etat_processus).erreur_systeme = + d_es_processus; + return; + } } (*s_etat_processus).erreur_execution = @@ -2623,11 +2649,17 @@ instruction_read(struct_processus *s_eta } } - if (pthread_mutex_lock(&((*s_etat_processus).mutex_fork)) - != 0) +# ifndef SEMAPHORES_NOMMES + while(sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) +# else + while(sem_wait((*s_etat_processus).semaphore_fork) != 0) +# endif { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; + if (errno != EINTR) + { + (*s_etat_processus).erreur_systeme = d_es_processus; + return; + } } if ((*s_etat_processus).var_volatile_requete_arret == -1)