X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/8dc7a3bb3f1aaa0fabb9a2acc22c32483f662bab..32e043cb47a2c23cd2b419c037d56f8139d51765:/src/msg/global.c diff --git a/src/msg/global.c b/src/msg/global.c index 7109a43981..d9d1719568 100644 --- a/src/msg/global.c +++ b/src/msg/global.c @@ -12,6 +12,7 @@ #include "xbt/log.h" #include "xbt/virtu.h" #include "xbt/ex.h" /* ex_backtrace_display */ +#include "mailbox.h" XBT_LOG_NEW_DEFAULT_SUBCATEGORY(msg_kernel, msg, "Logging specific to MSG (kernel)"); @@ -38,13 +39,25 @@ void MSG_global_init_args(int *argc, char **argv) MSG_global_init(argc, argv); } + +XBT_LOG_EXTERNAL_CATEGORY(msg_gos); +XBT_LOG_EXTERNAL_CATEGORY(msg_kernel); +XBT_LOG_EXTERNAL_CATEGORY(msg_mailbox); +XBT_LOG_EXTERNAL_CATEGORY(msg_process); + /** \ingroup msg_simulation * \brief Initialize some MSG internal data. */ void MSG_global_init(int *argc, char **argv) { - xbt_getpid = &MSG_process_self_PID; + xbt_getpid = MSG_process_self_PID; if (!msg_global) { + /* Connect our log channels: that must be done manually under windows */ + XBT_LOG_CONNECT(msg_gos, msg); + XBT_LOG_CONNECT(msg_kernel, msg); + XBT_LOG_CONNECT(msg_mailbox, msg); + XBT_LOG_CONNECT(msg_process, msg); + SIMIX_global_init(argc, argv); msg_global = xbt_new0(s_MSG_Global_t, 1); @@ -54,6 +67,9 @@ void MSG_global_init(int *argc, char **argv) msg_global->max_channel = 0; msg_global->PID = 1; + /* initialization of the mailbox module */ + MSG_mailbox_mod_init(); + SIMIX_function_register_process_create(_MSG_process_create_from_SIMIX); SIMIX_function_register_process_cleanup(__MSG_process_cleanup); SIMIX_function_register_process_kill(_MSG_process_kill_from_SIMIX); @@ -152,6 +168,7 @@ MSG_error_t MSG_main(void) /* Clean IO before the run */ fflush(stdout); fflush(stderr); + SIMIX_init(); //surf_solve(); /* Takes traces into account. Returns 0.0 */ /* xbt_fifo_size(msg_global->process_to_run) */ @@ -165,8 +182,6 @@ MSG_error_t MSG_main(void) while ((cond = xbt_fifo_pop(smx_action->cond_list))) { SIMIX_cond_broadcast(cond); } - /* action finished, destroy it */ - // SIMIX_action_destroy(smx_action); } while ((smx_action = xbt_fifo_pop(actions_done))) { @@ -175,8 +190,6 @@ MSG_error_t MSG_main(void) while ((cond = xbt_fifo_pop(smx_action->cond_list))) { SIMIX_cond_broadcast(cond); } - /* action finished, destroy it */ - //SIMIX_action_destroy(smx_action); } } xbt_fifo_free(actions_failed); @@ -232,8 +245,14 @@ MSG_error_t MSG_clean(void) free(msg_global); msg_global = NULL; + + /* cleanup all resources in the mailbox module */ + MSG_mailbox_mod_exit(); + SIMIX_clean(); + + return MSG_OK; }