--- rpl/src/operations_atomiques.c 2010/09/23 15:27:41 1.15 +++ rpl/src/operations_atomiques.c 2015/06/08 14:11:44 1.56 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.0.20 - Copyright (C) 1989-2010 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.22 + Copyright (C) 1989-2015 Dr. BERTRAND Joël This file is part of RPL/2. @@ -35,9 +35,6 @@ ================================================================================ */ -#ifndef OS2 -extern inline -#endif ssize_t read_atomic(struct_processus *s_etat_processus, int descripteur, void *tampon, size_t longueur_tampon) @@ -73,11 +70,13 @@ read_atomic(struct_processus *s_etat_pro if ((longueur_lue == 0) && (longueur_tampon == longueur_residuelle)) { - return(longueur_tampon - longueur_residuelle); + return(((ssize_t) longueur_tampon) - + ((ssize_t) longueur_residuelle)); } if ((longueur_lue == -1) && (errno == EINTR)) { + scrutation_interruptions(s_etat_processus); nanosleep(&attente, NULL); drapeau = d_vrai; } @@ -93,18 +92,19 @@ read_atomic(struct_processus *s_etat_pro ? PIPE_BUF : longueur_residuelle) { pointeur += longueur_lue; - longueur_residuelle -= longueur_lue; + longueur_residuelle -= (size_t) longueur_lue; - return(longueur_tampon - longueur_residuelle); + return(((ssize_t) longueur_tampon) - + ((ssize_t) longueur_residuelle)); } } } pointeur += longueur_lue; - longueur_residuelle -= longueur_lue; + longueur_residuelle -= (size_t) longueur_lue; } - return(longueur_tampon - longueur_residuelle); + return(((ssize_t) longueur_tampon) - ((ssize_t) longueur_residuelle)); } @@ -120,9 +120,6 @@ read_atomic(struct_processus *s_etat_pro ================================================================================ */ -#ifndef OS2 -extern inline -#endif ssize_t write_atomic(struct_processus *s_etat_processus, int descripteur, void *tampon, size_t longueur_tampon) @@ -159,6 +156,7 @@ write_atomic(struct_processus *s_etat_pr { if (errno == EINTR) { + scrutation_interruptions(s_etat_processus); nanosleep(&attente, NULL); drapeau = d_vrai; } @@ -175,15 +173,16 @@ write_atomic(struct_processus *s_etat_pr if (longueur_ecrite == 0) { + scrutation_interruptions(s_etat_processus); nanosleep(&attente, NULL); } } pointeur += longueur_ecrite; - longueur_residuelle -= longueur_ecrite; + longueur_residuelle -= (size_t) longueur_ecrite; } - return(longueur_tampon); + return((ssize_t) longueur_tampon); } // vim: ts=4