--- rpl/src/instructions_s10.c 2011/09/14 14:34:28 1.43 +++ rpl/src/instructions_s10.c 2011/09/14 17:55:59 1.44 @@ -1127,25 +1127,18 @@ instruction_smphrdecr(struct_processus * } } -# ifndef SEMAPHORES_NOMMES - if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) + if (pthread_mutex_unlock(&((*s_etat_processus).mutex_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(sem_wait((*((struct_semaphore *) (*s_objet_argument).objet)) .semaphore) == -1) { if (errno != EINTR) { + pthread_mutex_lock(&((*s_etat_processus).mutex_fork)); (*s_etat_processus).erreur_execution = d_ex_semaphore; if ((*s_etat_processus).profilage == d_vrai) @@ -1158,22 +1151,15 @@ instruction_smphrdecr(struct_processus * } } -# ifndef SEMAPHORES_NOMMES - while(sem_wait(&((*s_etat_processus).semaphore_fork)) == -1) -# else - while(sem_wait((*s_etat_processus).semaphore_fork) == -1) -# endif + if (pthread_mutex_lock(&((*s_etat_processus).mutex_fork)) != 0) { - if (errno != EINTR) + if ((*s_etat_processus).profilage == d_vrai) { - if ((*s_etat_processus).profilage == d_vrai) - { - profilage(s_etat_processus, NULL); - } - - (*s_etat_processus).erreur_systeme = d_es_processus; - return; + profilage(s_etat_processus, NULL); } + + (*s_etat_processus).erreur_systeme = d_es_processus; + return; } if ((*s_etat_processus).profilage == d_vrai) @@ -1281,19 +1267,16 @@ instruction_smphrtrydecr(struct_processu } } -# 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) + if (pthread_mutex_unlock(&((*s_etat_processus).mutex_fork)) != 0) { + if ((*s_etat_processus).profilage == d_vrai) + { + profilage(s_etat_processus, NULL); + } + (*s_etat_processus).erreur_systeme = d_es_processus; return; } -# endif (*((integer8 *) (*s_objet_resultat).objet)) = 0; @@ -1333,22 +1316,15 @@ instruction_smphrtrydecr(struct_processu } } -# ifndef SEMAPHORES_NOMMES - while(sem_wait(&((*s_etat_processus).semaphore_fork)) == -1) -# else - while(sem_wait((*s_etat_processus).semaphore_fork) == -1) -# endif + if (pthread_mutex_lock(&((*s_etat_processus).mutex_fork)) != 0) { - if (errno != EINTR) + if ((*s_etat_processus).profilage == d_vrai) { - if ((*s_etat_processus).profilage == d_vrai) - { - profilage(s_etat_processus, NULL); - } - - (*s_etat_processus).erreur_systeme = d_es_processus; - return; + profilage(s_etat_processus, NULL); } + + (*s_etat_processus).erreur_systeme = d_es_processus; + return; } if ((*s_etat_processus).profilage == d_vrai)