Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix on hppa: there is no working backtrace() there
[simgrid.git] / src / xbt / module.c
index 0a18cf8..652b0c7 100644 (file)
@@ -9,7 +9,6 @@
 
 #include "xbt/sysdep.h"
 #include "xbt/log.h"
-#include "xbt/error.h"
 #include "xbt/dynar.h"
 #include "xbt/config.h"
 
@@ -19,6 +18,9 @@
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(module,xbt, "module handling");
 
+char *xbt_binary_name=NULL; /* Mandatory to retrieve neat backtraces */
+int xbt_initialized=0;
+
 struct xbt_module_ {
   xbt_dynar_t *deps;
   xbt_cfg_t *cfg;
@@ -27,36 +29,26 @@ struct xbt_module_ {
   xbt_module_finalize_fct_t finalize;
 };
 
+/** @brief Initialize the xbt mechanisms. */
 void 
 xbt_init(int *argc, char **argv) {
-  xbt_init_defaultlog(argc, argv, NULL);
-}
+  xbt_initialized++;
 
-/**
- * xbt_init_defaultlog:
- * @argc:
- * @argv:
- *
- * Initialize the xbt mecanisms.
- */
-void
-xbt_init_defaultlog(int *argc,char **argv, const char *defaultlog) {
-  static short int first_run = 1;
-  if (!first_run)
+  if (xbt_initialized!=1)
     return;
+
+  xbt_binary_name = strdup(argv[0]);
+  VERB0("Initialize XBT");
   
-  first_run = 0;
-  INFO0("Initialize XBT");
-  
-  xbt_log_init(argc,argv,defaultlog);
+  xbt_log_init(argc,argv);
 }
 
-/**
- * xbt_exit:
- *
- * Finalize the xbt mecanisms.
- */
+/** @brief Finalize the xbt mechanisms. */
 void 
 xbt_exit(){
+  xbt_initialized--;
+  if (xbt_initialized == 0)
+     free(xbt_binary_name);
   xbt_log_exit();
 }
+