--- rpl/src/instructions_r4.c 2011/04/17 14:27:59 1.28.2.4 +++ rpl/src/instructions_r4.c 2011/09/20 08:56:23 1.42 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.0.23 + RPL/2 (R) version 4.1.3 Copyright (C) 1989-2011 Dr. BERTRAND Joël This file is part of RPL/2. @@ -2048,19 +2048,11 @@ instruction_read(struct_processus *s_eta return; } -# 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 attente.tv_sec = 0; attente.tv_nsec = GRANULARITE_us * 1000; @@ -2097,6 +2089,7 @@ instruction_read(struct_processus *s_eta tampon_lecture, longueur_questure, MSG_PEEK | MSG_DONTWAIT, (struct sockaddr *) &adresse_ipv6, &longueur_adresse); + # else if ((*s_etat_processus).langue == 'F') { @@ -2115,20 +2108,11 @@ instruction_read(struct_processus *s_eta free(tampon_lecture); liberation(s_etat_processus, s_objet_argument_1); -# ifndef SEMAPHORES_NOMMES while(sem_wait(&((*s_etat_processus) - .semaphore_fork)) == -1) -# else - while(sem_wait((*s_etat_processus) - .semaphore_fork) == -1) -# endif + .semaphore_fork)) != 0) { - if (errno != EINTR) - { - (*s_etat_processus).erreur_systeme = - d_es_processus; - return; - } + (*s_etat_processus).erreur_systeme = + d_es_processus; } (*s_etat_processus).erreur_execution = @@ -2136,31 +2120,26 @@ instruction_read(struct_processus *s_eta return; } - if (longueur_effective <= 0) + if (longueur_effective < 0) { nanosleep(&attente, NULL); INCR_GRANULARITE(attente.tv_nsec); scrutation_injection(s_etat_processus); } + // Une donnée a été reçue. + if (((*s_etat_processus).var_volatile_requete_arret == -1) - || (longueur_effective > 0)) + || (longueur_effective >= 0)) { break; } } -# 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 ((*s_etat_processus).var_volatile_requete_arret == -1) @@ -2556,19 +2535,11 @@ instruction_read(struct_processus *s_eta return; } -# 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 attente.tv_sec = 0; attente.tv_nsec = GRANULARITE_us * 1000; @@ -2623,20 +2594,12 @@ instruction_read(struct_processus *s_eta free(tampon_lecture); liberation(s_etat_processus, s_objet_argument_1); -# 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; } (*s_etat_processus).erreur_execution = @@ -2658,17 +2621,10 @@ instruction_read(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 ((*s_etat_processus).var_volatile_requete_arret == -1)