msg_global = xbt_new0(s_MSG_Global_t, 1);
- msg_global->host = xbt_fifo_new();
msg_global->max_channel = 0;
msg_global->PID = 1;
msg_global->sent_msg = 0;
#ifdef HAVE_TRACING
TRACE_start();
#endif
+
+ XBT_DEBUG("ADD MSG LEVELS");
+ MSG_HOST_LEVEL = xbt_lib_add_level(host_lib, (void_f_pvoid_t) __MSG_host_destroy);
}
/** \defgroup m_channel_management Understanding channels
*/
MSG_error_t MSG_set_channel_number(int number)
{
- xbt_assert0((msg_global)
+ xbt_assert((msg_global)
&& (msg_global->max_channel == 0),
"Channel number already set!");
*/
int MSG_get_channel_number(void)
{
- xbt_assert0((msg_global)
+ xbt_assert((msg_global)
&& (msg_global->max_channel != 0),
"Channel number not set yet!");
return MSG_OK;
}
+MSG_error_t MSG_main_stateful(void)
+{
+ /* Clean IO before the run */
+ fflush(stdout);
+ fflush(stderr);
+
+ if (MC_IS_ENABLED) {
+ MC_modelcheck_stateful();
+ }
+ else {
+ SIMIX_run();
+ }
+ return MSG_OK;
+}
+
+MSG_error_t MSG_main_liveness_stateful(xbt_automaton_t a)
+{
+ /* Clean IO before the run */
+ fflush(stdout);
+ fflush(stderr);
+
+ if (MC_IS_ENABLED) {
+ MC_modelcheck_liveness_stateful(a);
+ }
+ else {
+ SIMIX_run();
+ }
+ return MSG_OK;
+}
+
+MSG_error_t MSG_main_liveness_stateless(xbt_automaton_t a)
+{
+ /* Clean IO before the run */
+ fflush(stdout);
+ fflush(stderr);
+
+ if (MC_IS_ENABLED) {
+ MC_modelcheck_liveness_stateless(a);
+ }
+ else {
+ SIMIX_run();
+ }
+ return MSG_OK;
+}
+
/** \ingroup msg_simulation
* \brief Kill all running process
*/
MSG_error_t MSG_clean(void)
{
- xbt_fifo_item_t i = NULL;
- m_host_t h = NULL;
#ifdef HAVE_TRACING
TRACE_surf_release();
MSG_process_killall(0);
- xbt_fifo_foreach(msg_global->host, i, h, m_host_t) {
- __MSG_host_destroy(h);
- }
- xbt_fifo_free(msg_global->host);
-
- free(msg_global);
- msg_global = NULL;
-
/* initialization of the action module */
_MSG_action_exit();
SIMIX_clean();
+ free(msg_global);
+ msg_global = NULL;
+
return MSG_OK;
}