--- rpl/src/instructions_p7.c 2011/06/24 20:31:39 1.29 +++ rpl/src/instructions_p7.c 2011/09/20 08:56:23 1.36 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.1.0.prerelease.4 + RPL/2 (R) version 4.1.3 Copyright (C) 1989-2011 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; @@ -788,19 +788,11 @@ 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; } -# else - if (sem_post((*s_etat_processus).semaphore_fork) != 0) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } -# endif while((longueur_ecriture = write_atomic(s_etat_processus, (*(*((struct_processus_fils *) @@ -808,20 +800,11 @@ instruction_poke(struct_processus *s_eta .pipe_nombre_injections[1], "-", sizeof(unsigned char))) != sizeof(unsigned char)) { -# ifndef SEMAPHORES_NOMMES - while(sem_wait(&((*s_etat_processus) - .semaphore_fork)) == -1) -# else - while(sem_wait((*s_etat_processus) - .semaphore_fork) == -1) -# endif + if (sem_wait( + &((*s_etat_processus).semaphore_fork)) != 0) { - if (errno != EINTR) - { - (*s_etat_processus).erreur_systeme = - d_es_processus; - return; - } + (*s_etat_processus).erreur_systeme = d_es_processus; + return; } if (longueur_ecriture == -1) @@ -861,13 +844,8 @@ instruction_poke(struct_processus *s_eta return; } -# ifndef SEMAPHORES_NOMMES - if (sem_post(&((*s_etat_processus) - .semaphore_fork)) != 0) -# else - if (sem_post((*s_etat_processus) - .semaphore_fork) != 0) -# endif + if (sem_post( + &((*s_etat_processus).semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -888,17 +866,10 @@ instruction_poke(struct_processus *s_eta } } -# ifndef SEMAPHORES_NOMMES - while(sem_wait(&((*s_etat_processus).semaphore_fork)) == -1) -# else - while(sem_wait((*s_etat_processus).semaphore_fork) == -1) -# endif + if (sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) { - if (errno == EINTR) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } + (*s_etat_processus).erreur_systeme = d_es_processus; + return; } if (registre_stop == 0) @@ -980,9 +951,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é. @@ -1038,11 +1009,8 @@ instruction_poke(struct_processus *s_eta } } -# ifndef SEMAPHORES_NOMMES - if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) -# else - if (sem_post((*s_etat_processus).semaphore_fork) != 0) -# endif + if (sem_post( + &((*s_etat_processus).semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1054,20 +1022,11 @@ instruction_poke(struct_processus *s_eta .pipe_nombre_injections[1], "-", sizeof(unsigned char))) != sizeof(unsigned char)) { -# ifndef SEMAPHORES_NOMMES - while(sem_wait(&((*s_etat_processus) - .semaphore_fork)) == -1) -# else - while(sem_wait((*s_etat_processus) - .semaphore_fork) == -1) -# endif + if (sem_wait( + &((*s_etat_processus).semaphore_fork)) != 0) { - if (errno != EINTR) - { - (*s_etat_processus).erreur_systeme = - d_es_processus; - return; - } + (*s_etat_processus).erreur_systeme = d_es_processus; + return; } if (longueur_ecriture == -1) @@ -1107,13 +1066,8 @@ instruction_poke(struct_processus *s_eta return; } -# ifndef SEMAPHORES_NOMMES - if (sem_post(&((*s_etat_processus) - .semaphore_fork)) != 0) -# else - if (sem_post((*s_etat_processus) - .semaphore_fork) != 0) -# endif + if (sem_post( + &((*s_etat_processus).semaphore_fork)) != 0) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1134,19 +1088,11 @@ instruction_poke(struct_processus *s_eta } } -# ifndef SEMAPHORES_NOMMES - while(sem_wait(&((*s_etat_processus) - .semaphore_fork)) == -1) -# else - while(sem_wait((*s_etat_processus) - .semaphore_fork) == -1) -# endif + if (sem_wait( + &((*s_etat_processus).semaphore_fork)) != 0) { - if (errno != EINTR) - { - (*s_etat_processus).erreur_systeme = d_es_processus; - return; - } + (*s_etat_processus).erreur_systeme = d_es_processus; + return; } if (registre_stop == 0)