version 1.28, 2010/04/29 07:30:58
|
version 1.35, 2010/05/16 19:36:20
|
Line 24
|
Line 24
|
#define INCLUSION_RPL |
#define INCLUSION_RPL |
|
|
#define _GNU_SOURCE |
#define _GNU_SOURCE |
|
#define _POSIX_C_SOURCE 200112L |
#define _REENTRANT |
#define _REENTRANT |
|
|
|
#ifdef Darwin |
|
# define SIGPOLL SIGIO |
|
# define _DARWIN_C_SOURCE |
|
#endif |
|
|
/* |
/* |
================================================================================ |
================================================================================ |
Line 43
|
Line 48
|
#include <stdarg.h> |
#include <stdarg.h> |
|
|
#ifndef RPLARGS |
#ifndef RPLARGS |
|
# include <sys/mman.h> |
# include <sys/resource.h> |
# include <sys/resource.h> |
# include <sys/select.h> |
# include <sys/select.h> |
# include <sys/socket.h> |
# include <sys/socket.h> |
Line 361 int sem_getvalue2(sem_t *semaphore, int
|
Line 367 int sem_getvalue2(sem_t *semaphore, int
|
# define abs(i) (((i) >= 0) ? (i) : (-i)) |
# define abs(i) (((i) >= 0) ? (i) : (-i)) |
#endif |
#endif |
|
|
#define BUG(b, ...) \ |
|
do { if (b) { uprintf("[%d] BUG! <%s()> at line #%d of %s\n", \ |
|
(int) getpid(), __FUNCTION__, __LINE__, __FILE__); \ |
|
__VA_ARGS__; fflush(stdout); \ |
|
pthread_kill(pthread_self(), SIGBUS); }} while(0) |
|
|
|
#define NOTICE(m) \ |
#define NOTICE(m) \ |
do \ |
do \ |
{ \ |
{ \ |
Line 378 int sem_getvalue2(sem_t *semaphore, int
|
Line 378 int sem_getvalue2(sem_t *semaphore, int
|
|
|
#ifdef __GLIBC__ |
#ifdef __GLIBC__ |
#include <execinfo.h> |
#include <execinfo.h> |
|
#define __BACKTRACE |
#define BACKTRACE(n) \ |
#define BACKTRACE(n) \ |
do \ |
do \ |
{ \ |
{ \ |
Line 406 int sem_getvalue2(sem_t *semaphore, int
|
Line 407 int sem_getvalue2(sem_t *semaphore, int
|
#define BACKTRACE(n) NOTICE("BACKTRACE only defined in glibc") |
#define BACKTRACE(n) NOTICE("BACKTRACE only defined in glibc") |
#endif |
#endif |
|
|
|
#ifdef __BACKTRACE |
|
# define BUG(b, ...) \ |
|
do { if (b) { uprintf("[%d] BUG! <%s()> at line #%d of %s\n", \ |
|
(int) getpid(), __FUNCTION__, __LINE__, __FILE__); \ |
|
__VA_ARGS__; fflush(stdout); \ |
|
BACKTRACE(64); \ |
|
pthread_kill(pthread_self(), SIGBUS); }} while(0) |
|
#else |
|
# define BUG(b, ...) \ |
|
do { if (b) { uprintf("[%d] BUG! <%s()> at line #%d of %s\n", \ |
|
(int) getpid(), __FUNCTION__, __LINE__, __FILE__); \ |
|
__VA_ARGS__; fflush(stdout); \ |
|
pthread_kill(pthread_self(), SIGBUS); }} while(0) |
|
#endif |
|
|
|
|
/* |
/* |
================================================================================ |
================================================================================ |
Line 414 int sem_getvalue2(sem_t *semaphore, int
|
Line 430 int sem_getvalue2(sem_t *semaphore, int
|
*/ |
*/ |
|
|
#ifdef DEBUG_MEMOIRE |
#ifdef DEBUG_MEMOIRE |
|
void analyse_post_mortem(); |
void *debug_memoire_ajout(size_t taille, const unsigned char *fonction, |
void *debug_memoire_ajout(size_t taille, const unsigned char *fonction, |
unsigned long ligne, const unsigned char *argument); |
unsigned long ligne, const unsigned char *argument); |
void *debug_memoire_modification(void *pointeur, size_t taille, |
void *debug_memoire_modification(void *pointeur, size_t taille, |
const unsigned char *fonction, unsigned long ligne, |
const unsigned char *fonction, unsigned long ligne, |
const unsigned char *argument); |
const unsigned char *argument); |
void debug_memoire_retrait(void *ptr); |
void debug_memoire_retrait(void *ptr); |
|
void debug_memoire_verification(); |
|
|
#define malloc(s) debug_memoire_ajout(s, __FUNCTION__, __LINE__, #s) |
#define malloc(s) debug_memoire_ajout(s, __FUNCTION__, __LINE__, #s) |
#define free(s) debug_memoire_retrait(s) |
#define free(s) debug_memoire_retrait(s) |
Line 498 void debug_memoire_retrait(void *ptr);
|
Line 516 void debug_memoire_retrait(void *ptr);
|
#define d_absence_erreur ((logical1) d_faux) |
#define d_absence_erreur ((logical1) d_faux) |
#define d_erreur ((logical1) d_vrai) |
#define d_erreur ((logical1) d_vrai) |
|
|
#define d_code_fin_chaine '\0' |
#define d_code_fin_chaine '\0' |
#define d_code_espace ' ' |
#define d_code_espace ' ' |
#define d_code_retour_chariot '\n' |
#define d_code_retour_chariot '\n' |
#define d_code_tabulation '\t' |
#define d_code_tabulation '\t' |
|
#define d_longueur_maximale_instruction 16 |
|
|
#define d_INT "integer" |
#define d_INT "integer" |
#define d_REL "real" |
#define d_REL "real" |
Line 1853 typedef struct processus
|
Line 1872 typedef struct processus
|
unsigned long taille_pile_objets; |
unsigned long taille_pile_objets; |
struct_objet *pile_objets; |
struct_objet *pile_objets; |
|
|
# define TAILLE_CACHE 1024 |
# define TAILLE_CACHE 16384 |
|
|
unsigned long *objets_adr[TAILLE_CACHE]; |
unsigned long *objets_adr[TAILLE_CACHE]; |
int pointeur_adr; |
int pointeur_adr; |
Line 2177 void instruction_maxs(struct_processus *
|
Line 2196 void instruction_maxs(struct_processus *
|
void instruction_mclrin(struct_processus *s_etat_processus); |
void instruction_mclrin(struct_processus *s_etat_processus); |
void instruction_mean(struct_processus *s_etat_processus); |
void instruction_mean(struct_processus *s_etat_processus); |
void instruction_mem(struct_processus *s_etat_processus); |
void instruction_mem(struct_processus *s_etat_processus); |
|
void instruction_memlock(struct_processus *s_etat_processus); |
|
void instruction_memunlock(struct_processus *s_etat_processus); |
void instruction_min(struct_processus *s_etat_processus); |
void instruction_min(struct_processus *s_etat_processus); |
void instruction_mins(struct_processus *s_etat_processus); |
void instruction_mins(struct_processus *s_etat_processus); |
void instruction_mod(struct_processus *s_etat_processus); |
void instruction_mod(struct_processus *s_etat_processus); |
Line 2231 void instruction_print(struct_processus
|
Line 2252 void instruction_print(struct_processus
|
void instruction_private(struct_processus *s_etat_processus); |
void instruction_private(struct_processus *s_etat_processus); |
void instruction_prlcd(struct_processus *s_etat_processus); |
void instruction_prlcd(struct_processus *s_etat_processus); |
void instruction_prmd(struct_processus *s_etat_processus); |
void instruction_prmd(struct_processus *s_etat_processus); |
|
void instruction_procid(struct_processus *s_etat_processus); |
void instruction_prompt(struct_processus *s_etat_processus); |
void instruction_prompt(struct_processus *s_etat_processus); |
void instruction_protect(struct_processus *s_etat_processus); |
void instruction_protect(struct_processus *s_etat_processus); |
void instruction_prst(struct_processus *s_etat_processus); |
void instruction_prst(struct_processus *s_etat_processus); |
Line 2464 void *allocation_maillon(struct_processu
|
Line 2486 void *allocation_maillon(struct_processu
|
|
|
#ifndef RPLARGS |
#ifndef RPLARGS |
void analyse(struct_processus *s_etat_processus, void (*fonction)()); |
void analyse(struct_processus *s_etat_processus, void (*fonction)()); |
inline void *analyse_instruction(struct_processus *s_etat_processus, |
void *analyse_instruction(struct_processus *s_etat_processus, |
unsigned char *candidat); |
unsigned char *candidat); |
void appel_gnuplot(struct_processus *s_etat_processus, |
void appel_gnuplot(struct_processus *s_etat_processus, |
unsigned char persistance); |
unsigned char persistance); |
Line 2477 void conversion_element_tex(unsigned cha
|
Line 2499 void conversion_element_tex(unsigned cha
|
void conversion_format(struct_processus *s_etat_processus, |
void conversion_format(struct_processus *s_etat_processus, |
unsigned char *chaine); |
unsigned char *chaine); |
void conversion_hms_vers_decimal(real8 *angle); |
void conversion_hms_vers_decimal(real8 *angle); |
|
void conversion_majuscule_limitee(unsigned char *chaine_entree, |
|
unsigned char *chaine_sortie, unsigned long longueur); |
void conversion_radians_vers_degres(real8 *angle); |
void conversion_radians_vers_degres(real8 *angle); |
void correction_formateur_tex(struct_processus *s_etat_processus, |
void correction_formateur_tex(struct_processus *s_etat_processus, |
unsigned char **ligne); |
unsigned char **ligne); |
void debug_memoire_verification(struct_processus *s_etat_processus); |
|
void depilement_pile_systeme(struct_processus *s_etat_processus); |
void depilement_pile_systeme(struct_processus *s_etat_processus); |
void derivation(struct_processus *s_etat_processus, |
void derivation(struct_processus *s_etat_processus, |
struct_objet **s_expression); |
struct_objet **s_expression); |
Line 2574 void retrait_thread(struct_processus *s_
|
Line 2597 void retrait_thread(struct_processus *s_
|
void retrait_thread_surveillance(struct_processus *s_etat_processus, |
void retrait_thread_surveillance(struct_processus *s_etat_processus, |
struct_descripteur_thread *s_argument_thread); |
struct_descripteur_thread *s_argument_thread); |
void rplcore(struct_processus *s_etat_processus); |
void rplcore(struct_processus *s_etat_processus); |
inline void scrutation_injection(struct_processus *s_etat_processus); |
void scrutation_injection(struct_processus *s_etat_processus); |
void sf(struct_processus *s_etat_processus, unsigned char indice_drapeau); |
void sf(struct_processus *s_etat_processus, unsigned char indice_drapeau); |
void *surveillance_processus(void *argument); |
void *surveillance_processus(void *argument); |
void swap(void *variable_1, void *variable_2, unsigned long taille_octets); |
void swap(void *variable_1, void *variable_2, unsigned long taille_octets); |
Line 2794 logical1 test_fonction(unsigned char *ch
|
Line 2817 logical1 test_fonction(unsigned char *ch
|
*/ |
*/ |
|
|
#ifndef RPLARGS |
#ifndef RPLARGS |
inline ssize_t read_atomic(struct_processus *s_etat_processus, |
ssize_t read_atomic(struct_processus *s_etat_processus, |
int fd, void *buf, size_t count); |
int fd, void *buf, size_t count); |
inline ssize_t write_atomic(struct_processus *s_etat_processus, |
ssize_t write_atomic(struct_processus *s_etat_processus, |
int fd, void *buf, size_t count); |
int fd, void *buf, size_t count); |
#endif |
#endif |
|
|
Line 3186 void zgelsy_(integer4 *m, integer4 *n, i
|
Line 3209 void zgelsy_(integer4 *m, integer4 *n, i
|
* drapeau depuis une bibliothèque). |
* drapeau depuis une bibliothèque). |
*/ |
*/ |
|
|
inline int test_arret(struct_processus *s_etat_processus); |
int test_arret(struct_processus *s_etat_processus); |
|
|
#endif |
#endif |
|
|