version 1.245, 2014/06/16 18:48:22
|
version 1.250, 2014/08/04 06:58:48
|
Line 1
|
Line 1
|
/* |
/* |
================================================================================ |
================================================================================ |
RPL/2 (R) version 4.1.18 |
RPL/2 (R) version 4.1.19 |
Copyright (C) 1989-2014 Dr. BERTRAND Joël |
Copyright (C) 1989-2014 Dr. BERTRAND Joël |
|
|
This file is part of RPL/2. |
This file is part of RPL/2. |
Line 377 union semun
|
Line 377 union semun
|
*/ |
*/ |
|
|
#ifdef IPCS_SYSV |
#ifdef IPCS_SYSV |
|
# ifdef DEBUG_SEMAPHORES |
|
# define sem_wait(a) ({ int value; sem_getvalue(a, &value); \ |
|
uprintf("[%d-%llu] Semaphore %s (%p) "\ |
|
"waiting at %s() " \ |
|
"line #%d\n", (int) getpid(), (unsigned long long) i\ |
|
pthread_self(), \ |
|
#a, a, __FUNCTION__, __LINE__), fflush(stdout); \ |
|
if (value > 1) BUG(1, uprintf("Value %d\n", value)); \ |
|
sem_wait_SysV(a); }) |
|
# define sem_post(a) ({ int value; sem_getvalue(a, &value); \ |
|
uprintf("[%d-%llu] Semaphore %s (%p) "\ |
|
"posting at %s() " \ |
|
"line #%d\n", (int) getpid(), (unsigned long long) \ |
|
pthread_self(), \ |
|
#a, a, __FUNCTION__, __LINE__), fflush(stdout); \ |
|
if (value > 0) BUG(1, uprintf("Value %d\n", value)); \ |
|
sem_post_SysV(a); }) |
|
# define sem_destroy(a) ({ int value; sem_getvalue(a, &value); \ |
|
if (value == 0) BUG(1, uprintf("Value %d\n", value)); \ |
|
sem_destroy_SysV(a); }) |
|
# else |
|
# define sem_destroy(a) sem_destroy_SysV(a) |
|
# define sem_wait(a) sem_wait_SysV(a) |
|
# define sem_post(a) sem_post_SysV(a) |
|
# endif |
|
|
# define sem_init(a, b, c) sem_init_SysV(a, b, c) |
# define sem_init(a, b, c) sem_init_SysV(a, b, c) |
# define sem_destroy(a) sem_destroy_SysV(a) |
|
# define sem_wait(a) sem_wait_SysV(a) |
|
# define sem_trywait(a) sem_trywait_SysV(a) |
# define sem_trywait(a) sem_trywait_SysV(a) |
# define sem_timedwait(a, b) sem_timedwait_SysV(a, b) |
# define sem_timedwait(a, b) sem_timedwait_SysV(a, b) |
# define sem_post(a) sem_post_SysV(a) |
|
# define sem_getvalue(a, b) sem_getvalue_SysV(a, b) |
# define sem_getvalue(a, b) sem_getvalue_SysV(a, b) |
# define sem_open(...) sem_open_SysV(__VA_ARGS__) |
# define sem_open(...) sem_open_SysV(__VA_ARGS__) |
# define sem_close(a) sem_close_SysV(a) |
# define sem_close(a) sem_close_SysV(a) |
# define sem_unlink(a) sem_unlink_SysV(a) |
# define sem_unlink(a) sem_unlink_SysV(a) |
|
#else |
|
# ifdef DEBUG_SEMAPHORES |
|
# define sem_wait(a) ({ int value; sem_getvalue(a, &value); \ |
|
uprintf("[%d-%llu] Semaphore %s (%p) "\ |
|
"waiting at %s() " \ |
|
"line #%d\n", (int) getpid(), (unsigned long long) \ |
|
pthread_self(), \ |
|
#a, a, __FUNCTION__, __LINE__), fflush(stdout); \ |
|
if (value > 1) BUG(1, uprintf("Value %d\n", value)); sem_wait(a); }) |
|
# define sem_post(a) ({ int value; sem_getvalue(a, &value); \ |
|
uprintf("[%d-%llu] Semaphore %s (%p) "\ |
|
"posting at %s() " \ |
|
"line #%d\n", (int) getpid(), (unsigned long long) \ |
|
pthread_self(), \ |
|
#a, a, __FUNCTION__, __LINE__), fflush(stdout); \ |
|
if (value > 0) BUG(1, uprintf("Value %d\n", value)); sem_post(a); }) |
|
# define sem_destroy(a) ({ int value; sem_getvalue(a, &value); \ |
|
if (value == 0) BUG(1, uprintf("Value %d\n", value)); \ |
|
sem_destroy(a); }) |
|
# endif |
#endif |
#endif |
|
|
|
|
Line 480 union semun
|
Line 523 union semun
|
__EXTERN__ pthread_mutex_t mutex_liste_variables_partagees; |
__EXTERN__ pthread_mutex_t mutex_liste_variables_partagees; |
__EXTERN__ pthread_mutex_t mutex_sem __STATIC_MUTEX_INITIALIZATION__; |
__EXTERN__ pthread_mutex_t mutex_sem __STATIC_MUTEX_INITIALIZATION__; |
|
|
__EXTERN__ sem_t __PTR__ semaphore_gestionnaires_signaux; |
|
|
|
__EXTERN__ volatile int routine_recursive; |
__EXTERN__ volatile int routine_recursive; |
|
|
# define SEM_FORK 0 |
# define SEM_FORK 0 |
# define SEM_QUEUE 1 |
# define SEM_QUEUE 1 |
# define SEM_SIGNAUX 2 |
# define SEM_SIGNALISATION 2 |
# define SEM_SIGNALISATION 3 |
# define SEM_ARRET_SIGNALISATION 3 |
# define SEM_ARRET_SIGNALISATION 4 |
|
|
|
sem_t *sem_init2(unsigned int valeur, pid_t pid, int ordre); |
sem_t *sem_init2(unsigned int valeur, pid_t pid, int ordre); |
sem_t *sem_init3(unsigned int valeur, pid_t pid, pthread_t tid, int ordre); |
sem_t *sem_init3(unsigned int valeur, pid_t pid, pthread_t tid, int ordre); |
Line 687 pid_t debug_fork();
|
Line 727 pid_t debug_fork();
|
pthread_mutex_unlock(mutex) |
pthread_mutex_unlock(mutex) |
#endif |
#endif |
|
|
#ifdef DEBUG_SEMAPHORES |
|
#define sem_wait(a) ({ int value; sem_getvalue(a, &value); \ |
|
uprintf("[%d-%llu] Semaphore %s (%p) "\ |
|
"waiting at %s() " \ |
|
"line #%d\n", (int) getpid(), (unsigned long long) pthread_self(), \ |
|
#a, a, __FUNCTION__, __LINE__), fflush(stdout); \ |
|
if (value > 1) BUG(1, uprintf("Value %d\n", value)); sem_wait(a); }) |
|
#define sem_post(a) ({ int value; sem_getvalue(a, &value); \ |
|
uprintf("[%d-%llu] Semaphore %s (%p) "\ |
|
"posting at %s() " \ |
|
"line #%d\n", (int) getpid(), (unsigned long long) pthread_self(), \ |
|
#a, a, __FUNCTION__, __LINE__), fflush(stdout); \ |
|
if (value > 0) BUG(1, uprintf("Value %d\n", value)); sem_post(a); }) |
|
#define sem_destroy(a) ({ int value; sem_getvalue(a, &value); \ |
|
if (value == 0) BUG(1, uprintf("Value %d\n", value)); sem_destroy(a); }) |
|
#endif |
|
|
|
|
|
/* |
/* |
================================================================================ |
================================================================================ |
Line 2293 typedef struct processus
|
Line 2316 typedef struct processus
|
|
|
logical1 processus_detache; |
logical1 processus_detache; |
|
|
|
enum t_type type_en_cours; |
|
|
/* Profilage */ |
/* Profilage */ |
|
|
logical1 profilage; |
logical1 profilage; |
Line 3313 logical1 initialisation_fichier_acces_in
|
Line 3338 logical1 initialisation_fichier_acces_in
|
sqlite3 *sqlite, integer8 position_clef, logical1 binaire); |
sqlite3 *sqlite, integer8 position_clef, logical1 binaire); |
logical1 lancement_thread_signaux(struct_processus *s_etat_processus); |
logical1 lancement_thread_signaux(struct_processus *s_etat_processus); |
logical1 recherche_instruction_suivante(struct_processus *s_etat_processus); |
logical1 recherche_instruction_suivante(struct_processus *s_etat_processus); |
|
logical1 recherche_instruction_suivante_recursive( |
|
struct_processus *s_etat_processus, integer8 recursivite); |
logical1 retrait_variable(struct_processus *s_etat_processus, |
logical1 retrait_variable(struct_processus *s_etat_processus, |
unsigned char *nom_variable, unsigned char type); |
unsigned char *nom_variable, unsigned char type); |
logical1 retrait_variables_par_niveau(struct_processus *s_etat_processus); |
logical1 retrait_variables_par_niveau(struct_processus *s_etat_processus); |