version 1.21, 2010/04/07 13:45:10
|
version 1.22, 2010/04/17 18:57:36
|
Line 182 typedef unsigned char t_8_bits;
|
Line 182 typedef unsigned char t_8_bits;
|
*/ |
*/ |
|
|
#ifndef RPLARGS |
#ifndef RPLARGS |
|
# ifdef SEMAPHORES_NOMMES |
|
# define LONGUEUR_NOM_SEMAPHORE 64 |
|
# endif |
# ifndef MAIN_RPL |
# ifndef MAIN_RPL |
extern jmp_buf contexte; |
extern jmp_buf contexte; |
extern jmp_buf contexte_initial; |
extern jmp_buf contexte_initial; |
|
|
|
# ifdef SEMAPHORES_NOMMES |
|
extern pthread_mutex_t mutex_sem; |
|
# endif |
|
|
extern pthread_key_t semaphore_fork_processus_courant; |
extern pthread_key_t semaphore_fork_processus_courant; |
|
|
extern sem_t semaphore_liste_threads; |
extern sem_t |
extern sem_t semaphore_gestionnaires_signaux; |
# ifdef SEMAPHORES_NOMMES |
extern sem_t semaphore_gestionnaires_signaux_atomique; |
* |
|
# endif |
|
semaphore_liste_threads; |
|
|
|
extern sem_t |
|
# ifdef SEMAPHORES_NOMMES |
|
* |
|
# endif |
|
semaphore_gestionnaires_signaux; |
|
|
|
extern sem_t |
|
# ifdef SEMAPHORES_NOMMES |
|
* |
|
# endif |
|
semaphore_gestionnaires_signaux_atomique; |
|
|
|
# ifdef SEMAPHORES_NOMMES |
|
// 0 -> liste_threads |
|
// 1 -> gestionnaire_signaux |
|
// 2 -> gestionnaire_signaux_atomique |
|
// 3 -> &((*s_etat_processus).semaphore_fork) |
|
extern unsigned char noms_semaphores[4][LONGUEUR_NOM_SEMAPHORE]; |
|
extern sem_t *semaphores_nommes[4]; |
|
# endif |
# else |
# else |
jmp_buf contexte; |
jmp_buf contexte; |
jmp_buf contexte_initial; |
jmp_buf contexte_initial; |
|
|
|
# ifdef SEMAPHORES_NOMMES |
|
pthread_mutex_t mutex_sem = PTHREAD_MUTEX_INITIALIZER; |
|
# endif |
|
|
|
pthread_key_t semaphore_fork_processus_courant; |
|
|
|
sem_t |
|
# ifdef SEMAPHORES_NOMMES |
|
* |
|
# endif |
|
semaphore_liste_threads; |
|
|
pthread_key_t semaphore_fork_processus_courant; |
sem_t |
|
# ifdef SEMAPHORES_NOMMES |
|
* |
|
# endif |
|
semaphore_gestionnaires_signaux; |
|
|
sem_t semaphore_liste_threads; |
sem_t |
sem_t semaphore_gestionnaires_signaux; |
# ifdef SEMAPHORES_NOMMES |
sem_t semaphore_gestionnaires_signaux_atomique; |
* |
|
# endif |
|
semaphore_gestionnaires_signaux_atomique; |
|
|
|
# ifdef SEMAPHORES_NOMMES |
|
unsigned char noms_semaphores[4][LONGUEUR_NOM_SEMAPHORE]; |
|
sem_t *semaphores_nommes[4]; |
|
# endif |
# endif |
# endif |
#endif |
#endif |
|
|
|
#ifdef SEMAPHORES_NOMMES |
|
enum t_semaphore { sem_liste_threads = 0, |
|
sem_gestionnaires_signaux = 1, |
|
sem_gestionnaires_signaux_atomique = 2, |
|
sem_fork = 3 }; |
|
|
|
sem_t *sem_init2(unsigned int valeur, enum t_semaphore semaphore); |
|
int sem_destroy2(sem_t *semaphore_p, enum t_semaphore semaphore); |
|
int sem_getvalue2(sem_t *semaphore, int *valeur); |
|
|
|
#define sem_getvalue(semaphore, value) sem_getvalue2(semaphore, value) |
|
#define sem_post(semaphore) \ |
|
({ int r; pthread_mutex_lock(&mutex_sem); \ |
|
r = sem_post(semaphore), pthread_mutex_unlock(&mutex_sem); r; }) |
|
#define sem_wait(semaphore) \ |
|
({ int r; pthread_mutex_lock(&mutex_sem); \ |
|
r = sem_wait(semaphore), pthread_mutex_unlock(&mutex_sem); r; }) |
|
#define sem_trywait(semaphore) \ |
|
({ int r; pthread_mutex_lock(&mutex_sem); \ |
|
r = sem_trywait(semaphore), pthread_mutex_unlock(&mutex_sem); r; }) |
|
#endif |
|
|
/* |
/* |
================================================================================ |
================================================================================ |
Macros |
Macros |
Line 487 void debug_memoire_retrait(void *ptr);
|
Line 562 void debug_memoire_retrait(void *ptr);
|
# define d_es_interruption_invalide 2012 |
# define d_es_interruption_invalide 2012 |
# define d_es_contexte 2013 |
# define d_es_contexte 2013 |
# define d_es_somme_controle 2014 |
# define d_es_somme_controle 2014 |
# define d_es_nom_implicite 2015 |
|
#endif |
#endif |
|
|
/* |
/* |
Line 622 void debug_memoire_retrait(void *ptr);
|
Line 696 void debug_memoire_retrait(void *ptr);
|
# define d_ex_erreur_profilage 78 |
# define d_ex_erreur_profilage 78 |
# define d_ex_enregistrement_inexistant 79 |
# define d_ex_enregistrement_inexistant 79 |
# define d_ex_clef_inexistante 80 |
# define d_ex_clef_inexistante 80 |
|
# define d_ex_nom_implicite 81 |
#endif |
#endif |
|
|
|
|
Line 1741 typedef struct processus
|
Line 1816 typedef struct processus
|
pthread_mutex_t mutex; |
pthread_mutex_t mutex; |
|
|
// Sémaphore autorisant les fork() |
// Sémaphore autorisant les fork() |
sem_t semaphore_fork; |
sem_t |
|
# ifdef SEMAPHORES_NOMMES |
|
* |
|
# endif |
|
semaphore_fork; |
|
|
/* Mutexes */ |
/* Mutexes */ |
|
|