--- rpl/src/instructions_s10.c 2011/09/20 08:56:24 1.46 +++ rpl/src/instructions_s10.c 2011/09/20 14:36:29 1.48 @@ -1105,7 +1105,11 @@ instruction_smphrdecr(struct_processus * } } - if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) +# ifndef SEMAPHORES_NOMMES + if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) +# else + if (sem_post((*s_etat_processus).semaphore_fork) != 0) +# endif { (*s_etat_processus).erreur_systeme = d_es_processus; return; @@ -1116,7 +1120,12 @@ instruction_smphrdecr(struct_processus * { if (errno != EINTR) { - sem_post(&((*s_etat_processus).semaphore_fork)); +# ifndef SEMAPHORES_NOMMES + sem_post(&((*s_etat_processus).semaphore_fork)); +# else + sem_post((*s_etat_processus).semaphore_fork); +# endif + (*s_etat_processus).erreur_execution = d_ex_semaphore; if ((*s_etat_processus).profilage == d_vrai) @@ -1129,15 +1138,22 @@ instruction_smphrdecr(struct_processus * } } - if (sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) +# ifndef SEMAPHORES_NOMMES + while(sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) +# else + while(sem_wait((*s_etat_processus).semaphore_fork) != 0) +# endif { - if ((*s_etat_processus).profilage == d_vrai) + if (errno != EINTR) { - profilage(s_etat_processus, NULL); - } + if ((*s_etat_processus).profilage == d_vrai) + { + profilage(s_etat_processus, NULL); + } - (*s_etat_processus).erreur_systeme = d_es_processus; - return; + (*s_etat_processus).erreur_systeme = d_es_processus; + return; + } } if ((*s_etat_processus).profilage == d_vrai) @@ -1245,7 +1261,11 @@ instruction_smphrtrydecr(struct_processu } } - if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) +# ifndef SEMAPHORES_NOMMES + if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) +# else + if (sem_post((*s_etat_processus).semaphore_fork) != 0) +# endif { if ((*s_etat_processus).profilage == d_vrai) { @@ -1294,15 +1314,22 @@ instruction_smphrtrydecr(struct_processu } } - if (sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) +# ifndef SEMAPHORES_NOMMES + while(sem_wait(&((*s_etat_processus).semaphore_fork)) != 0) +# else + while(sem_wait((*s_etat_processus).semaphore_fork) != 0) +# endif { - if ((*s_etat_processus).profilage == d_vrai) + if (errno != EINTR) { - profilage(s_etat_processus, NULL); - } + if ((*s_etat_processus).profilage == d_vrai) + { + profilage(s_etat_processus, NULL); + } - (*s_etat_processus).erreur_systeme = d_es_processus; - return; + (*s_etat_processus).erreur_systeme = d_es_processus; + return; + } } if ((*s_etat_processus).profilage == d_vrai)