X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/62245a9da13c7e59088366fdfaa8d896d29db157..dbacefe09d961d21ce12a7aa223b1177e9b3c323:/src/xbt/xbt_main.c diff --git a/src/xbt/xbt_main.c b/src/xbt/xbt_main.c index 71569a876a..a6aafc5626 100644 --- a/src/xbt/xbt_main.c +++ b/src/xbt/xbt_main.c @@ -7,6 +7,7 @@ * under the terms of the license (GNU LGPL) which comes with this package. */ #include "xbt/misc.h" +#include "simgrid_config.h" /*HAVE_MMAP _XBT_WIN32 */ #include "time.h" /* to seed the random generator */ #include "xbt/sysdep.h" @@ -45,28 +46,39 @@ XBT_LOG_EXTERNAL_CATEGORY(xbt_matrix); XBT_LOG_EXTERNAL_CATEGORY(xbt_queue); XBT_LOG_EXTERNAL_CATEGORY(xbt_set); XBT_LOG_EXTERNAL_CATEGORY(xbt_sync_os); +XBT_LOG_EXTERNAL_CATEGORY(xbt_parmap); +XBT_LOG_EXTERNAL_CATEGORY(xbt_parmap_unit); +int _surf_do_model_check = 0; /* this variable is used accros the libraries, and must be declared in XBT so that it's also defined in GRAS (not only in libsimgrid) */ /* Declare xbt_preinit and xbt_postexit as constructor/destructor of the library. * This is crude and rather compiler-specific, unfortunately. */ static void xbt_preinit(void) _XBT_GNUC_CONSTRUCTOR; static void xbt_postexit(void) _XBT_GNUC_DESTRUCTOR; + +#ifdef _XBT_WIN32 +# undef _XBT_NEED_INIT_PRAGMA +#endif + #ifdef _XBT_NEED_INIT_PRAGMA #pragma init (xbt_preinit) #pragma fini (xbt_postexit) #endif -#ifdef WIN32 +#ifdef _XBT_WIN32 #include /* Dummy prototype to make gcc happy */ -BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved); +BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, + LPVOID lpvReserved); /* see also http://msdn.microsoft.com/en-us/library/ms682583%28VS.85%29.aspx */ /* and http://www.microsoft.com/whdc/driver/kernel/DLL_bestprac.mspx */ -BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { +BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, + LPVOID lpvReserved) +{ if (fdwReason == DLL_PROCESS_ATTACH) { xbt_preinit(); } else if (fdwReason == DLL_PROCESS_DETACH) { @@ -78,7 +90,11 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { #endif -static void xbt_preinit(void) { +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 */ @@ -104,23 +120,30 @@ static void xbt_preinit(void) { XBT_LOG_CONNECT(xbt_queue, xbt); XBT_LOG_CONNECT(xbt_set, xbt); XBT_LOG_CONNECT(xbt_sync_os, xbt); + XBT_LOG_CONNECT(xbt_parmap,xbt); + XBT_LOG_CONNECT(xbt_parmap_unit,xbt_parmap); - xbt_fifo_preinit(); xbt_backtrace_preinit(); xbt_os_thread_mod_preinit(); + xbt_fifo_preinit(); + xbt_dict_preinit(); } -static void xbt_postexit(void) { - xbt_os_thread_mod_postexit(); +static void xbt_postexit(void) +{ xbt_backtrace_postexit(); xbt_fifo_postexit(); xbt_dict_postexit(); xbt_log_postexit(); + xbt_os_thread_mod_postexit(); free(xbt_binary_name); +#ifdef HAVE_MMAP + mmalloc_postexit(); +#endif } /** @brief Initialize the xbt mechanisms. */ @@ -129,25 +152,27 @@ void xbt_init(int *argc, char **argv) // 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) + if (xbt_initialized > 1) return; xbt_binary_name = xbt_strdup(argv[0]); srand((unsigned int) time(NULL)); - VERB0("Initialize XBT"); + XBT_VERB("Initialize XBT"); xbt_log_init(argc, argv); } /** @brief Finalize the xbt mechanisms. */ -void xbt_exit() { - WARN0("This function is deprecated, you shouldn't use it"); +void xbt_exit() +{ + XBT_WARN("This function is deprecated, you shouldn't use it"); } /* these two functions belong to xbt/sysdep.h, which have no corresponding .c file */ /** @brief like free, but you can be sure that it is a function */ -XBT_PUBLIC(void) xbt_free_f(void *p) { +XBT_PUBLIC(void) xbt_free_f(void *p) +{ free(p); }