version 1.167, 2012/05/31 12:11:30
|
version 1.177, 2012/10/01 11:05:09
|
Line 1
|
Line 1
|
/* |
/* |
================================================================================ |
================================================================================ |
RPL/2 (R) version 4.1.9 |
RPL/2 (R) version 4.1.11 |
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 145
|
Line 145
|
int sem_close_SysV(sem_t *sem); |
int sem_close_SysV(sem_t *sem); |
int sem_wait_SysV(sem_t *sem); |
int sem_wait_SysV(sem_t *sem); |
int sem_trywait_SysV(sem_t *sem); |
int sem_trywait_SysV(sem_t *sem); |
|
int sem_timedwait_SysV(sem_t *sem, struct timespec *ts); |
int sem_post_SysV(sem_t *sem); |
int sem_post_SysV(sem_t *sem); |
int sem_getvalue_SysV(sem_t *sem, int *value); |
int sem_getvalue_SysV(sem_t *sem, int *value); |
int sem_unlink_SysV(const char *nom); |
int sem_unlink_SysV(char *nom); |
int sem_destroy_SysV(sem_t *sem); |
int sem_destroy_SysV(sem_t *sem); |
# endif |
# endif |
|
|
Line 342 union semun
|
Line 343 union semun
|
# define sem_destroy(a) sem_destroy_SysV(a) |
# define sem_destroy(a) sem_destroy_SysV(a) |
# define sem_wait(a) sem_wait_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_post(a) sem_post_SysV(a) |
# 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__) |
Line 367 union semun
|
Line 369 union semun
|
// SIGHUP |
// SIGHUP |
// SIGALRM |
// SIGALRM |
|
|
# define SIGTEST SIGUSR1 |
# define SIGTEST 255 |
|
|
// Nombre d'interruptions disponibles |
// Nombre d'interruptions disponibles |
# define d_NOMBRE_INTERRUPTIONS 64 |
# define d_NOMBRE_INTERRUPTIONS 64 |
Line 431 union semun
|
Line 433 union semun
|
__EXTERN__ jmp_buf contexte_processus; |
__EXTERN__ jmp_buf contexte_processus; |
__EXTERN__ jmp_buf contexte_thread; |
__EXTERN__ jmp_buf contexte_thread; |
|
|
__EXTERN__ int signal_test; |
__EXTERN__ volatile int signal_test; |
|
|
__EXTERN__ pid_t pid_processus_pere; |
__EXTERN__ pid_t pid_processus_pere; |
|
|
Line 443 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_sections_critiques; |
|
|
__EXTERN__ sem_t __PTR__ semaphore_gestionnaires_signaux; |
__EXTERN__ sem_t __PTR__ semaphore_gestionnaires_signaux; |
|
|
Line 1479 typedef struct liste_pile_systeme
|
Line 1482 typedef struct liste_pile_systeme
|
|
|
/* |
/* |
type clôture : |
type clôture : |
C SELECT : END termine un test SELECT/DEFAULT/END. |
C SELECT : END termine un test SELECT/DEFAULT/END. |
D DO : END termine une boucle DO/UNTIL/END. |
D DO : END termine une boucle DO/UNTIL/END. |
I IF : END termine un test IF/THEN (ELSE)/END. |
I IF : END termine un test IF/THEN (ELSE)/END. |
J IFERR : END termine un test IFERR/THEN (ELSE)/END. |
J IFERR : END termine un test IFERR/THEN (ELSE)/END. |
K CASE : END termine un test CASE/THEN/END |
K CASE : END termine un test CASE/THEN/END |
W WHILE : END termine une boucle WHILE/REPEAT/END. |
W WHILE : END termine une boucle WHILE/REPEAT/END. |
|
Q CRITICAL : END termine une section critique CRITICAL/END |
|
|
F FOR : NEXT ou STEP termine une boucle avec compteur. |
F FOR : NEXT ou STEP termine une boucle avec compteur. |
S START : NEXT ou STEP termine une boucle sans compteur. |
S START : NEXT ou STEP termine une boucle sans compteur. |
L LOOP : boucle utilisé dans le traitement de l'instruction RETURN. |
L LOOP : boucle utilisé dans le traitement de l'instruction RETURN. |
Elle correspond à une boucle FOR ou START mais sans son |
Elle correspond à une boucle FOR ou START mais sans son |
initialisation. |
initialisation. |
|
A FORALL : NEXT termine une boucle sur un objet. |
*/ |
*/ |
|
|
unsigned long adresse_retour; |
unsigned long adresse_retour; |
Line 2213 typedef struct processus
|
Line 2218 typedef struct processus
|
|
|
struct_liste_chainee *liste_mutexes; |
struct_liste_chainee *liste_mutexes; |
pthread_mutex_t protection_liste_mutexes; |
pthread_mutex_t protection_liste_mutexes; |
|
unsigned int sections_critiques; |
|
|
/* Drapeau nécessaire à RESTART */ |
/* Drapeau nécessaire à RESTART */ |
|
|
Line 2385 void instruction_cosh(struct_processus *
|
Line 2391 void instruction_cosh(struct_processus *
|
void instruction_cov(struct_processus *s_etat_processus); |
void instruction_cov(struct_processus *s_etat_processus); |
void instruction_cr(struct_processus *s_etat_processus); |
void instruction_cr(struct_processus *s_etat_processus); |
void instruction_create(struct_processus *s_etat_processus); |
void instruction_create(struct_processus *s_etat_processus); |
|
void instruction_critical(struct_processus *s_etat_processus); |
void instruction_crmtx(struct_processus *s_etat_processus); |
void instruction_crmtx(struct_processus *s_etat_processus); |
void instruction_cross(struct_processus *s_etat_processus); |
void instruction_cross(struct_processus *s_etat_processus); |
void instruction_crsmphr(struct_processus *s_etat_processus); |
void instruction_crsmphr(struct_processus *s_etat_processus); |
Line 2469 void instruction_fleche_str(struct_proce
|
Line 2476 void instruction_fleche_str(struct_proce
|
void instruction_fleche_table(struct_processus *s_etat_processus); |
void instruction_fleche_table(struct_processus *s_etat_processus); |
void instruction_floor(struct_processus *s_etat_processus); |
void instruction_floor(struct_processus *s_etat_processus); |
void instruction_for(struct_processus *s_etat_processus); |
void instruction_for(struct_processus *s_etat_processus); |
|
void instruction_forall(struct_processus *s_etat_processus); |
void instruction_format(struct_processus *s_etat_processus); |
void instruction_format(struct_processus *s_etat_processus); |
void instruction_fp(struct_processus *s_etat_processus); |
void instruction_fp(struct_processus *s_etat_processus); |
void instruction_fs_test(struct_processus *s_etat_processus); |
void instruction_fs_test(struct_processus *s_etat_processus); |
Line 3097 struct_liste_chainee *sauvegarde_argumen
|
Line 3105 struct_liste_chainee *sauvegarde_argumen
|
#ifndef RPLARGS |
#ifndef RPLARGS |
unsigned char *analyse_algebrique(struct_processus *s_etat_processus, |
unsigned char *analyse_algebrique(struct_processus *s_etat_processus, |
unsigned char *chaine_algebrique, struct_liste_chainee **l_base_liste); |
unsigned char *chaine_algebrique, struct_liste_chainee **l_base_liste); |
|
unsigned char *analyse_flux(struct_processus *s_etat_processus, |
|
unsigned char *flux, long longueur); |
unsigned char *recherche_chemin_fichiers_temporaires(struct_processus |
unsigned char *recherche_chemin_fichiers_temporaires(struct_processus |
*s_etat_processus); |
*s_etat_processus); |
unsigned char *compactage(unsigned char *chaine); |
unsigned char *compactage(unsigned char *chaine); |