* under the terms of the license (GNU LGPL) which comes with this package. */
#include "xbt/misc.h"
+#include "simgrid_config.h" /*HAVE_MMAP*/
#include "time.h" /* to seed the random generator */
#include "xbt/sysdep.h"
#pragma fini (xbt_postexit)
#endif
-#ifdef WIN32
+#ifdef _XBT_WIN32
#include <windows.h>
/* Dummy prototype to make gcc happy */
#endif
static void xbt_preinit(void) {
+ #ifdef HAVE_MMAP
+ mmalloc_preinit();
+ #endif
xbt_log_preinit();
/* Connect our log channels: that must be done manually under windows */
XBT_LOG_CONNECT(xbt_sync_os, xbt);
xbt_fifo_preinit();
+ xbt_dict_preinit();
xbt_backtrace_preinit();
xbt_os_thread_mod_preinit();
xbt_log_postexit();
free(xbt_binary_name);
+#ifdef HAVE_MMAP
+ mmalloc_postexit();
+#endif
}
/** @brief Initialize the xbt mechanisms. */
void xbt_init(int *argc, char **argv)
{
- xbt_assert0(xbt_initialized == 0, "xbt_init must be called only once");
+ // FIXME it would be nice to assert that this function is called only once. But each gras process do call it...
xbt_initialized++;
+ if (xbt_initialized >1)
+ return;
+
xbt_binary_name = xbt_strdup(argv[0]);
srand((unsigned int) time(NULL));
VERB0("Initialize XBT");