--- rpl/src/instructions_p7.c 2011/06/22 13:27:02 1.28 +++ rpl/src/instructions_p7.c 2012/08/22 10:47:17 1.46 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.0.prerelease.3 - Copyright (C) 1989-2011 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.10 + Copyright (C) 1989-2012 Dr. BERTRAND Joël This file is part of RPL/2. @@ -763,9 +763,9 @@ instruction_poke(struct_processus *s_eta // débloquer les instructions de type WF* pour les // lectures bloquantes. - if (kill((*(*((struct_processus_fils *) + if (envoi_signal_processus((*(*((struct_processus_fils *) (*(*l_element_courant).donnee).objet)) - .thread).pid, SIGINJECT) != 0) + .thread).pid, rpl_siginject) != 0) { // Le processus fils peut s'être terminé. break; @@ -789,18 +789,15 @@ instruction_poke(struct_processus *s_eta } # ifndef SEMAPHORES_NOMMES - if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } + if (sem_post(&((*s_etat_processus).semaphore_fork)) + != 0) # else - if (sem_post((*s_etat_processus).semaphore_fork) != 0) + if (sem_post((*s_etat_processus).semaphore_fork) != 0) +# endif { (*s_etat_processus).erreur_systeme = d_es_processus; return; } -# endif while((longueur_ecriture = write_atomic(s_etat_processus, (*(*((struct_processus_fils *) @@ -809,11 +806,11 @@ instruction_poke(struct_processus *s_eta sizeof(unsigned char))) != sizeof(unsigned char)) { # ifndef SEMAPHORES_NOMMES - while(sem_wait(&((*s_etat_processus) - .semaphore_fork)) == -1) + while(sem_wait( + &((*s_etat_processus).semaphore_fork)) != 0) # else - while(sem_wait((*s_etat_processus) - .semaphore_fork) == -1) + while(sem_wait( + (*s_etat_processus).semaphore_fork) != 0) # endif { if (errno != EINTR) @@ -862,11 +859,11 @@ instruction_poke(struct_processus *s_eta } # ifndef SEMAPHORES_NOMMES - if (sem_post(&((*s_etat_processus) - .semaphore_fork)) != 0) + if (sem_post( + &((*s_etat_processus).semaphore_fork)) != 0) # else - if (sem_post((*s_etat_processus) - .semaphore_fork) != 0) + if (sem_post( + (*s_etat_processus).semaphore_fork) != 0) # endif { (*s_etat_processus).erreur_systeme = d_es_processus; @@ -889,12 +886,13 @@ instruction_poke(struct_processus *s_eta } # ifndef SEMAPHORES_NOMMES - while(sem_wait(&((*s_etat_processus).semaphore_fork)) == -1) + while(sem_wait(&((*s_etat_processus).semaphore_fork)) + != 0) # else - while(sem_wait((*s_etat_processus).semaphore_fork) == -1) + while(sem_wait((*s_etat_processus).semaphore_fork) != 0) # endif { - if (errno == EINTR) + if (errno != EINTR) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -980,9 +978,9 @@ instruction_poke(struct_processus *s_eta (*(*l_element_courant).donnee).objet)).thread) .thread_actif == d_vrai) { - if (pthread_kill((*(*((struct_processus_fils *) + if (envoi_signal_thread((*(*((struct_processus_fils *) (*(*l_element_courant).donnee).objet)).thread) - .tid, SIGINJECT) != 0) + .tid, rpl_siginject) != 0) { // Le processus fils peut s'être terminé. @@ -1039,9 +1037,11 @@ instruction_poke(struct_processus *s_eta } # ifndef SEMAPHORES_NOMMES - if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) + if (sem_post( + &((*s_etat_processus).semaphore_fork)) != 0) # else - if (sem_post((*s_etat_processus).semaphore_fork) != 0) + if (sem_post( + (*s_etat_processus).semaphore_fork) != 0) # endif { (*s_etat_processus).erreur_systeme = d_es_processus; @@ -1055,11 +1055,11 @@ instruction_poke(struct_processus *s_eta sizeof(unsigned char))) != sizeof(unsigned char)) { # ifndef SEMAPHORES_NOMMES - while(sem_wait(&((*s_etat_processus) - .semaphore_fork)) == -1) + while(sem_wait( + &((*s_etat_processus).semaphore_fork)) != 0) # else - while(sem_wait((*s_etat_processus) - .semaphore_fork) == -1) + while(sem_wait( + (*s_etat_processus).semaphore_fork) != 0) # endif { if (errno != EINTR) @@ -1108,11 +1108,11 @@ instruction_poke(struct_processus *s_eta } # ifndef SEMAPHORES_NOMMES - if (sem_post(&((*s_etat_processus) - .semaphore_fork)) != 0) + if (sem_post( + &((*s_etat_processus).semaphore_fork)) != 0) # else - if (sem_post((*s_etat_processus) - .semaphore_fork) != 0) + if (sem_post( + (*s_etat_processus).semaphore_fork) != 0) # endif { (*s_etat_processus).erreur_systeme = d_es_processus; @@ -1135,11 +1135,11 @@ instruction_poke(struct_processus *s_eta } # ifndef SEMAPHORES_NOMMES - while(sem_wait(&((*s_etat_processus) - .semaphore_fork)) == -1) + while(sem_wait( + &((*s_etat_processus).semaphore_fork)) != 0) # else - while(sem_wait((*s_etat_processus) - .semaphore_fork) == -1) + while(sem_wait( + (*s_etat_processus).semaphore_fork) != 0) # endif { if (errno != EINTR)