version 1.185, 2012/12/13 16:59:43
|
version 1.191, 2012/12/20 15:32:52
|
Line 1
|
Line 1
|
/* |
/* |
================================================================================ |
================================================================================ |
RPL/2 (R) version 4.1.11 |
RPL/2 (R) version 4.1.12 |
Copyright (C) 1989-2012 Dr. BERTRAND Joël |
Copyright (C) 1989-2012 Dr. BERTRAND Joël |
|
|
This file is part of RPL/2. |
This file is part of RPL/2. |
Line 445 union semun
|
Line 445 union semun
|
__STATIC_MUTEX_INITIALIZATION__; |
__STATIC_MUTEX_INITIALIZATION__; |
__EXTERN__ pthread_mutex_t mutex_gestionnaires_signaux_atomique |
__EXTERN__ pthread_mutex_t mutex_gestionnaires_signaux_atomique |
__STATIC_MUTEX_INITIALIZATION__; |
__STATIC_MUTEX_INITIALIZATION__; |
|
__EXTERN__ pthread_mutex_t mutex_creation_variable_partagee |
|
__STATIC_MUTEX_INITIALIZATION__; |
__EXTERN__ pthread_mutex_t mutex_sections_critiques; |
__EXTERN__ pthread_mutex_t mutex_sections_critiques; |
|
__EXTERN__ pthread_mutex_t mutex_liste_variables_partagees; |
|
|
__EXTERN__ sem_t __PTR__ semaphore_gestionnaires_signaux; |
__EXTERN__ sem_t __PTR__ semaphore_gestionnaires_signaux; |
|
|
Line 742 pid_t debug_fork();
|
Line 745 pid_t debug_fork();
|
Erreurs système |
Erreurs système |
-------------------------------------------------------------------------------- |
-------------------------------------------------------------------------------- |
*/ |
*/ |
|
#define DEBUG_ERREURS |
#ifdef DEBUG_ERREURS |
#ifdef DEBUG_ERREURS |
# ifdef MESSAGES |
# ifdef MESSAGES |
# define __erreur(i) i |
# define __erreur(i) i |
Line 1224 typedef struct connecteur_sql
|
Line 1227 typedef struct connecteur_sql
|
# ifdef POSTGRESQL_SUPPORT |
# ifdef POSTGRESQL_SUPPORT |
PGconn *postgresql; |
PGconn *postgresql; |
# endif |
# endif |
|
sqlite3 *sqlite; |
} descripteur; |
} descripteur; |
} struct_connecteur_sql; |
} struct_connecteur_sql; |
#endif |
#endif |
Line 1237 typedef struct connecteur_sql
|
Line 1241 typedef struct connecteur_sql
|
"POSTGRESQL") == 0) \ |
"POSTGRESQL") == 0) \ |
postgresqlclose((*((struct_connecteur_sql *) (*s_objet).objet)) \ |
postgresqlclose((*((struct_connecteur_sql *) (*s_objet).objet)) \ |
.descripteur); \ |
.descripteur); \ |
|
else if (strcmp((*((struct_connecteur_sql *) (*s_objet).objet)).type, \ |
|
"SQLITE") == 0) \ |
|
sqlite3_close((*((struct_connecteur_sql *) (*s_objet).objet)) \ |
|
.descripteur.sqlite); \ |
else \ |
else \ |
BUG(1, uprintf("SQL type '%s' not allowed!", \ |
BUG(1, uprintf("SQL type '%s' not allowed!", \ |
(*((struct_connecteur_sql *) (*s_objet).objet)).type)); |
(*((struct_connecteur_sql *) (*s_objet).objet)).type)); |
Line 1738 typedef struct arbre_variables
|
Line 1746 typedef struct arbre_variables
|
|
|
struct liste_variables *feuille; |
struct liste_variables *feuille; |
struct liste_variables_statiques *feuille_statique; |
struct liste_variables_statiques *feuille_statique; |
struct liste_variables_partagees **feuille_partagee; |
|
|
|
pthread_mutex_t mutex_feuille_partagee; |
|
} struct_arbre_variables; |
} struct_arbre_variables; |
|
|
|
typedef struct arbre_variables_partagees |
|
{ |
|
unsigned int noeuds_utilises; |
|
// Nombre de noeuds utilisés dans le |
|
// tableau **noeuds |
|
signed int indice_tableau_pere; |
|
// Position de la structure dans le |
|
// tableau **noeuds du père |
|
|
|
struct arbre_variables_partagees *noeud_pere; |
|
struct arbre_variables_partagees **noeuds; |
|
|
|
struct liste_variables_partagees *feuille; |
|
|
|
pthread_mutex_t mutex_feuille; |
|
} struct_arbre_variables_partagees; |
|
|
#define INITIALISATION_MUTEX(mutex) \ |
#define INITIALISATION_MUTEX(mutex) \ |
do { \ |
do { \ |
pthread_mutexattr_t attributs_mutex; \ |
pthread_mutexattr_t attributs_mutex; \ |
Line 1801 typedef struct liste_variables_partagees
|
Line 1823 typedef struct liste_variables_partagees
|
struct liste_variables_partagees *suivant; |
struct liste_variables_partagees *suivant; |
struct liste_variables_partagees *precedent; |
struct liste_variables_partagees *precedent; |
struct liste_variables_partagees *reference; |
struct liste_variables_partagees *reference; |
struct_arbre_variables *feuille; |
struct_arbre_variables_partagees *feuille; |
struct_variable_partagee *variable; |
struct_variable_partagee *variable; |
|
pthread_t tid; |
|
pid_t pid; |
} struct_liste_variables_partagees; |
} struct_liste_variables_partagees; |
#endif |
#endif |
|
|
Line 1923 typedef struct processus
|
Line 1947 typedef struct processus
|
struct_liste_variables *l_liste_variables_par_niveau; |
struct_liste_variables *l_liste_variables_par_niveau; |
struct_liste_variables_statiques |
struct_liste_variables_statiques |
*l_liste_variables_statiques; |
*l_liste_variables_statiques; |
|
|
|
struct_arbre_variables_partagees |
|
**s_arbre_variables_partagees; |
struct_liste_variables_partagees |
struct_liste_variables_partagees |
*l_liste_variables_partagees; |
**l_liste_variables_partagees; |
|
|
logical1 niveau_supprime; |
logical1 niveau_supprime; |
|
|
Line 2306 typedef struct processus
|
Line 2333 typedef struct processus
|
struct_arbre_variables *variables_noeud[TAILLE_CACHE]; |
struct_arbre_variables *variables_noeud[TAILLE_CACHE]; |
int pointeur_variables_noeud; |
int pointeur_variables_noeud; |
|
|
|
struct_arbre_variables_partagees |
|
*variables_partagees_noeud[TAILLE_CACHE]; |
|
int pointeur_variables_partagees_noeud; |
|
|
struct_liste_variables *variables_feuille[TAILLE_CACHE]; |
struct_liste_variables *variables_feuille[TAILLE_CACHE]; |
int pointeur_variables_feuille; |
int pointeur_variables_feuille; |
|
|
Line 2314 typedef struct processus
|
Line 2345 typedef struct processus
|
|
|
struct_arbre_variables **variables_tableau_noeuds[TAILLE_CACHE]; |
struct_arbre_variables **variables_tableau_noeuds[TAILLE_CACHE]; |
int pointeur_variables_tableau_noeuds; |
int pointeur_variables_tableau_noeuds; |
|
|
|
struct_arbre_variables_partagees |
|
**variables_tableau_noeuds_partages |
|
[TAILLE_CACHE]; |
|
int pointeur_variables_tableau_noeuds_partages; |
} struct_processus; |
} struct_processus; |
#endif |
#endif |
|
|
Line 2993 void liberation_arbre_instructions(struc
|
Line 3029 void liberation_arbre_instructions(struc
|
struct_instruction *arbre); |
struct_instruction *arbre); |
void liberation_arbre_variables(struct_processus *s_etat_processus, |
void liberation_arbre_variables(struct_processus *s_etat_processus, |
struct_arbre_variables *arbre, logical1 definitions); |
struct_arbre_variables *arbre, logical1 definitions); |
|
void liberation_arbre_variables_partagees(struct_processus *s_etat_processus, |
|
struct_arbre_variables_partagees *arbre); |
void liberation_contexte_cas(struct_processus *s_etat_processus); |
void liberation_contexte_cas(struct_processus *s_etat_processus); |
void liberation_generateur_aleatoire(struct_processus *s_etat_processus); |
void liberation_generateur_aleatoire(struct_processus *s_etat_processus); |
|
void liberation_mutexes_arbre_variables_partagees(struct_processus |
|
*s_etat_processus, struct_arbre_variables_partagees *l_element_courant); |
void liberation_threads(struct_processus *s_etat_processus); |
void liberation_threads(struct_processus *s_etat_processus); |
void liberation_profil(struct_processus *s_etat_processus); |
void liberation_profil(struct_processus *s_etat_processus); |
void localisation_courante(struct_processus *s_etat_processus); |
void localisation_courante(struct_processus *s_etat_processus); |
Line 3227 logical1 retrait_variable(struct_process
|
Line 3267 logical1 retrait_variable(struct_process
|
logical1 retrait_variables_par_niveau(struct_processus *s_etat_processus); |
logical1 retrait_variables_par_niveau(struct_processus *s_etat_processus); |
logical1 retrait_variable_partagee(struct_processus *s_etat_processus, |
logical1 retrait_variable_partagee(struct_processus *s_etat_processus, |
unsigned char *nom_variable, union_position_variable position); |
unsigned char *nom_variable, union_position_variable position); |
logical1 retrait_variables_statiques_locales( |
logical1 retrait_variables_partagees_locales( |
struct_processus *s_etat_processus); |
struct_processus *s_etat_processus); |
logical1 retrait_variable_statique(struct_processus *s_etat_processus, |
logical1 retrait_variable_statique(struct_processus *s_etat_processus, |
unsigned char *nom_variable, union_position_variable position); |
unsigned char *nom_variable, union_position_variable position); |
|
logical1 retrait_variables_statiques_locales( |
|
struct_processus *s_etat_processus); |
logical1 sequenceur(struct_processus *s_etat_processus); |
logical1 sequenceur(struct_processus *s_etat_processus); |
logical1 sequenceur_optimise(struct_processus *s_etat_processus); |
logical1 sequenceur_optimise(struct_processus *s_etat_processus); |
#endif |
#endif |
Line 3253 logical1 recherche_variable(struct_proce
|
Line 3295 logical1 recherche_variable(struct_proce
|
unsigned char *nom_variable); |
unsigned char *nom_variable); |
logical1 recherche_variable_globale(struct_processus *s_etat_processus, |
logical1 recherche_variable_globale(struct_processus *s_etat_processus, |
unsigned char *nom_variable); |
unsigned char *nom_variable); |
logical1 recherche_variable_partagee(struct_processus *s_etat_processus, |
|
unsigned char *nom_variable, union_position_variable position, |
|
unsigned char origine); |
|
logical1 test_cfsf(struct_processus *s_etat_processus, |
logical1 test_cfsf(struct_processus *s_etat_processus, |
unsigned char indice_drapeau); |
unsigned char indice_drapeau); |
logical1 test_expression_rpn(unsigned char *chaine); |
logical1 test_expression_rpn(unsigned char *chaine); |
Line 3286 int alsprintf(unsigned char **strp, cons
|
Line 3325 int alsprintf(unsigned char **strp, cons
|
int interruption_violation_access(void *adresse_fautive, int gravite); |
int interruption_violation_access(void *adresse_fautive, int gravite); |
#ifndef RPLARGS |
#ifndef RPLARGS |
int liste_variables(struct_processus *s_etat_processus, |
int liste_variables(struct_processus *s_etat_processus, |
struct_tableau_variables *tableau, int position, |
struct_tableau_variables *tableau); |
struct_arbre_variables *l_element_courant); |
int nombre_variables(struct_processus *s_etat_processus); |
int nombre_variables(struct_processus *s_etat_processus, |
|
struct_arbre_variables *l_element_courant); |
|
int readline_analyse_syntaxique(int count, int key); |
int readline_analyse_syntaxique(int count, int key); |
int readline_effacement(int count, int key); |
int readline_effacement(int count, int key); |
#endif |
#endif |
Line 3394 struct_arbre_variables **allocation_tabl
|
Line 3431 struct_arbre_variables **allocation_tabl
|
/* |
/* |
-------------------------------------------------------------------------------- |
-------------------------------------------------------------------------------- |
Fonctions renvoyant un pointeur sur une *struct_liste_variables_statiques |
Fonctions renvoyant un pointeur sur une *struct_liste_variables_statiques |
|
ou *struct_liste_variables_partagees |
-------------------------------------------------------------------------------- |
-------------------------------------------------------------------------------- |
*/ |
*/ |
|
|
struct_liste_variables_statiques *recherche_variable_statique(struct_processus |
struct_liste_variables_statiques *recherche_variable_statique(struct_processus |
*s_etat_processus, unsigned char *nom_variable, |
*s_etat_processus, unsigned char *nom_variable, |
union_position_variable position, |
union_position_variable position, unsigned char origine); |
unsigned char origine); |
struct_liste_variables_partagees *recherche_variable_partagee(struct_processus |
|
*s_etat_processus, unsigned char *nom_variable, |
|
union_position_variable position, unsigned char origine); |
#endif |
#endif |
|
|
/* |
/* |