X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b1acf7fe2f1886e9adcb4313f53548c9995a906c..bc25b620e3abeca5bb4d7003c5eea1970a307056:/src/xbt/module.c diff --git a/src/xbt/module.c b/src/xbt/module.c index 5391c310b0..c7b52bb1eb 100644 --- a/src/xbt/module.c +++ b/src/xbt/module.c @@ -13,6 +13,7 @@ GRAS_LOG_NEW_DEFAULT_SUBCATEGORY(module,GRAS); extern void gras_log_exit(void); +static int gras_running_process = 0; struct gras_module_ { gras_dynar_t *deps; @@ -50,6 +51,7 @@ gras_init_defaultlog(int *argc,char **argv, const char *defaultlog) { opt=strchr(argv[i],'='); opt++; TRYFAIL(gras_log_control_set(opt)); + DEBUG1("Did apply '%s' as log setting",opt); /*remove this from argv*/ for (j=i+1; j<*argc; j++) { argv[j-1] = argv[j]; @@ -64,10 +66,13 @@ gras_init_defaultlog(int *argc,char **argv, const char *defaultlog) { TRYFAIL(gras_log_control_set(defaultlog)); } + gras_process_init(); /* calls procdata_init, which calls dynar_new */ /** init other submodules */ - gras_msg_init(); - gras_trp_init(); - gras_datadesc_init(); + if (gras_running_process++ == 0) { + gras_msg_init(); + gras_trp_init(); + gras_datadesc_init(); + } } /** @@ -77,8 +82,13 @@ gras_init_defaultlog(int *argc,char **argv, const char *defaultlog) { */ void gras_exit(){ - gras_msg_exit(); - gras_trp_exit(); - gras_datadesc_exit(); + INFO0("Exiting GRAS"); + gras_process_exit(); + if (--gras_running_process == 0) { + gras_msg_exit(); + gras_trp_exit(); + gras_datadesc_exit(); + } gras_log_exit(); + DEBUG0("Exited GRAS"); }