#include "xbt/sysdep.h"
#include "xbt/log.h"
-#include "xbt/error.h"
#include "xbt/dynar.h"
#include "xbt/config.h"
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;
/** @brief Initialize the xbt mechanisms. */
void
xbt_init(int *argc, char **argv) {
- xbt_init_defaultlog(argc, argv, NULL);
-}
+ xbt_initialized++;
-/** @brief Initialize the xbt mechanisms. */
-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;
-
- first_run = 0;
+
+ xbt_binary_name = strdup(argv[0]);
VERB0("Initialize XBT");
- xbt_log_init(argc,argv,defaultlog);
+ xbt_log_init(argc,argv);
}
/** @brief Finalize the xbt mechanisms. */
void
xbt_exit(){
+ xbt_initialized--;
+ if (xbt_initialized == 0)
+ free(xbt_binary_name);
xbt_log_exit();
}