version 1.5, 2010/03/09 10:18:47
|
version 1.26, 2011/06/24 20:31:39
|
Line 1
|
Line 1
|
/* |
/* |
================================================================================ |
================================================================================ |
RPL/2 (R) version 4.0.13 |
RPL/2 (R) version 4.1.0.prerelease.4 |
Copyright (C) 1989-2010 Dr. BERTRAND Joël |
Copyright (C) 1989-2011 Dr. BERTRAND Joël |
|
|
This file is part of RPL/2. |
This file is part of RPL/2. |
|
|
Line 20
|
Line 20
|
*/ |
*/ |
|
|
|
|
#include "rpl.conv.h" |
#include "rpl-conv.h" |
|
|
|
|
/* |
/* |
Line 38
|
Line 38
|
void |
void |
instruction_mem(struct_processus *s_etat_processus) |
instruction_mem(struct_processus *s_etat_processus) |
{ |
{ |
struct_liste_chainee *l_element_courant; |
int j; |
|
int nb_variables; |
|
|
struct_objet *s_objet_resultat; |
struct_liste_chainee *l_element_courant; |
|
|
|
struct_objet *s_objet_resultat; |
|
|
unsigned long i; |
struct_tableau_variables *tableau; |
|
|
|
unsigned long i; |
|
|
(*s_etat_processus).erreur_execution = d_ex; |
(*s_etat_processus).erreur_execution = d_ex; |
|
|
Line 139 instruction_mem(struct_processus *s_etat
|
Line 144 instruction_mem(struct_processus *s_etat
|
(*((integer8 *) (*((*((*((struct_liste_chainee *) |
(*((integer8 *) (*((*((*((struct_liste_chainee *) |
(*s_objet_resultat).objet)).suivant)).donnee)).objet)) = 0; |
(*s_objet_resultat).objet)).suivant)).donnee)).objet)) = 0; |
|
|
for(i = 0; i < (*s_etat_processus).nombre_variables; i++) |
nb_variables = nombre_variables(s_etat_processus, |
|
(*s_etat_processus).s_arbre_variables); |
|
|
|
if ((tableau = malloc(nb_variables * sizeof(struct_tableau_variables))) |
|
== NULL) |
|
{ |
|
(*s_etat_processus).erreur_systeme = d_es_allocation_memoire; |
|
return; |
|
} |
|
|
|
liste_variables(s_etat_processus, tableau, 0, |
|
(*s_etat_processus).s_arbre_variables); |
|
|
|
for(j = 0; j < nb_variables; j++) |
{ |
{ |
(*((integer8 *) (*((*((*((struct_liste_chainee *) (*s_objet_resultat) |
(*((integer8 *) (*((*((*((struct_liste_chainee *) (*s_objet_resultat) |
.objet)).suivant)).donnee)).objet)) += sizeof(unsigned char) * |
.objet)).suivant)).donnee)).objet)) += sizeof(unsigned char) * |
strlen((*s_etat_processus).s_liste_variables[i].nom); |
strlen(tableau[j].nom); |
(*((integer8 *) (*((*((*((struct_liste_chainee *) (*s_objet_resultat) |
(*((integer8 *) (*((*((*((struct_liste_chainee *) (*s_objet_resultat) |
.objet)).suivant)).donnee)).objet)) += occupation_memoire( |
.objet)).suivant)).donnee)).objet)) += occupation_memoire( |
(*s_etat_processus).s_liste_variables[i].objet); |
tableau[j].objet); |
} |
} |
|
|
|
free(tableau); |
|
|
for(i = 0; i < (*s_etat_processus).nombre_variables_statiques; i++) |
for(i = 0; i < (*s_etat_processus).nombre_variables_statiques; i++) |
{ |
{ |
// Comptabilisation des empreintes mémoire des variables |
// Comptabilisation des empreintes mémoire des variables |
Line 396 instruction_mtxlock(struct_processus *s_
|
Line 416 instruction_mtxlock(struct_processus *s_
|
} |
} |
} |
} |
|
|
|
# ifndef SEMAPHORES_NOMMES |
if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) |
if (sem_post(&((*s_etat_processus).semaphore_fork)) != 0) |
{ |
{ |
(*s_etat_processus).erreur_systeme = d_es_processus; |
(*s_etat_processus).erreur_systeme = d_es_processus; |
return; |
return; |
} |
} |
|
# else |
|
if (sem_post((*s_etat_processus).semaphore_fork) != 0) |
|
{ |
|
(*s_etat_processus).erreur_systeme = d_es_processus; |
|
return; |
|
} |
|
# endif |
|
|
if (pthread_mutex_lock(&((*((struct_mutex *) (*s_objet_argument).objet)) |
if (pthread_mutex_lock(&((*((struct_mutex *) (*s_objet_argument).objet)) |
.mutex)) != 0) |
.mutex)) != 0) |
{ |
{ |
|
# ifndef SEMAPHORES_NOMMES |
while(sem_wait(&((*s_etat_processus).semaphore_fork)) == -1) |
while(sem_wait(&((*s_etat_processus).semaphore_fork)) == -1) |
|
# else |
|
while(sem_wait((*s_etat_processus).semaphore_fork) == -1) |
|
# endif |
{ |
{ |
if ((*s_etat_processus).profilage == d_vrai) |
if ((*s_etat_processus).profilage == d_vrai) |
{ |
{ |
Line 430 instruction_mtxlock(struct_processus *s_
|
Line 462 instruction_mtxlock(struct_processus *s_
|
return; |
return; |
} |
} |
|
|
|
# ifndef SEMAPHORES_NOMMES |
while(sem_wait(&((*s_etat_processus).semaphore_fork)) == -1) |
while(sem_wait(&((*s_etat_processus).semaphore_fork)) == -1) |
|
# else |
|
while(sem_wait((*s_etat_processus).semaphore_fork) == -1) |
|
# endif |
{ |
{ |
if (errno != EINTR) |
if (errno != EINTR) |
{ |
{ |