--- rpl/src/instructions_p7.c 2011/07/22 07:38:39 1.31 +++ rpl/src/instructions_p7.c 2011/09/20 09:51:42 1.37 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.1.1 + 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,13 +800,8 @@ 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 + while(sem_wait( + &((*s_etat_processus).semaphore_fork)) != 0) { if (errno != EINTR) { @@ -861,13 +848,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,13 +870,9 @@ 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 + while(sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) { - if (errno == EINTR) + if (errno != EINTR) { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -980,9 +958,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 +1016,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,13 +1029,8 @@ 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 + while(sem_wait( + &((*s_etat_processus).semaphore_fork)) != 0) { if (errno != EINTR) { @@ -1107,13 +1077,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,13 +1099,8 @@ 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 + while(sem_wait( + &((*s_etat_processus).semaphore_fork)) != 0) { if (errno != EINTR) {