X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a846b9415542cdaa8ba5d0f7efeadecb56ba7c2c..18c57b27dd71ee7839c6a90368c845886a87d638:/examples/msg/actions/actions.c diff --git a/examples/msg/actions/actions.c b/examples/msg/actions/actions.c index 758ebf111e..2448f93fad 100644 --- a/examples/msg/actions/actions.c +++ b/examples/msg/actions/actions.c @@ -11,8 +11,6 @@ #include "xbt.h" /* calloc, printf */ #include "instr/instr_private.h" -void SIMIX_ctx_raw_factory_init(smx_context_factory_t *factory); - XBT_LOG_NEW_DEFAULT_CATEGORY(actions, "Messages specific for this msg example"); int communicator_size = 0; @@ -38,7 +36,7 @@ static double parse_double(const char *string) value = strtod(string, &endptr); if (*endptr != '\0') - THROW1(unknown_error, 0, "%s is not a double", string); + THROWF(unknown_error, 0, "%s is not a double", string); return value; } @@ -89,8 +87,7 @@ static void action_send(const char *const *action) XBT_VERB("%s %f", name, MSG_get_clock() - clock); - if (XBT_LOG_ISENABLED(actions, xbt_log_priority_verbose)) - free(name); + free(name); #ifdef HAVE_TRACING TRACE_smpi_ptp_out(rank, rank, dst_traced, "send"); @@ -139,13 +136,15 @@ static void action_recv(const char *const *action) #endif XBT_DEBUG("Receiving: %s", name); - MSG_task_receive(&task, mailbox_name); + MSG_error_t res = MSG_task_receive(&task, mailbox_name); // MSG_task_receive(&task, MSG_process_get_name(MSG_process_self())); XBT_VERB("%s %f", name, MSG_get_clock() - clock); - MSG_task_destroy(task); - if (XBT_LOG_ISENABLED(actions, xbt_log_priority_verbose)) - free(name); + if (res == MSG_OK) { + MSG_task_destroy(task); + } + + free(name); #ifdef HAVE_TRACING TRACE_smpi_ptp_out(rank, src_traced, rank, "recv"); TRACE_smpi_recv(rank, src_traced, rank); @@ -198,7 +197,7 @@ static void action_wait(const char *const *action) double clock = MSG_get_clock(); process_globals_t globals = (process_globals_t) MSG_process_get_data(MSG_process_self()); - xbt_assert1(xbt_dynar_length(globals->irecvs), + xbt_assert(xbt_dynar_length(globals->irecvs), "action wait not preceded by any irecv: %s", xbt_str_join_array(action," ")); if (XBT_LOG_ISENABLED(actions, xbt_log_priority_verbose)) @@ -218,8 +217,7 @@ static void action_wait(const char *const *action) MSG_task_destroy(task); XBT_VERB("%s %f", name, MSG_get_clock() - clock); - if (XBT_LOG_ISENABLED(actions, xbt_log_priority_verbose)) - free(name); + free(name); #ifdef HAVE_TRACING TRACE_smpi_ptp_out(rank, src_traced, rank, "wait"); TRACE_smpi_recv(rank, src_traced, rank); @@ -239,32 +237,31 @@ static void action_barrier(const char *const *action) name = xbt_str_join_array(action, " "); if (mutex == NULL) { // first arriving on the barrier - mutex = SIMIX_req_mutex_init(); - cond = SIMIX_req_cond_init(); + mutex = simcall_mutex_init(); + cond = simcall_cond_init(); processes_arrived_sofar=0; } XBT_DEBUG("Entering barrier: %s (%d already there)", name,processes_arrived_sofar); - SIMIX_req_mutex_lock(mutex); + simcall_mutex_lock(mutex); if (++processes_arrived_sofar == communicator_size) { - SIMIX_req_cond_broadcast(cond); - SIMIX_req_mutex_unlock(mutex); + simcall_cond_broadcast(cond); + simcall_mutex_unlock(mutex); } else { - SIMIX_req_cond_wait(cond,mutex); - SIMIX_req_mutex_unlock(mutex); + simcall_cond_wait(cond,mutex); + simcall_mutex_unlock(mutex); } XBT_DEBUG("Exiting barrier: %s", name); processes_arrived_sofar--; if (!processes_arrived_sofar) { - SIMIX_req_cond_destroy(cond); - SIMIX_req_mutex_destroy(mutex); + simcall_cond_destroy(cond); + simcall_mutex_destroy(mutex); mutex=NULL; } - if (XBT_LOG_ISENABLED(actions, xbt_log_priority_verbose)) - free(name); + free(name); } @@ -281,7 +278,7 @@ static void action_reduce(const char *const *action) process_globals_t counters = (process_globals_t) MSG_process_get_data(MSG_process_self()); - xbt_assert0(communicator_size, "Size of Communicator is not defined, " + xbt_assert(communicator_size, "Size of Communicator is not defined, " "can't use collective operations"); process_name = MSG_process_get_name(MSG_process_self()); @@ -334,7 +331,7 @@ static void action_bcast(const char *const *action) process_globals_t counters = (process_globals_t) MSG_process_get_data(MSG_process_self()); - xbt_assert0(communicator_size, "Size of Communicator is not defined, " + xbt_assert(communicator_size, "Size of Communicator is not defined, " "can't use collective operations"); process_name = MSG_process_get_name(MSG_process_self()); @@ -385,8 +382,7 @@ static void action_sleep(const char *const *action) MSG_process_sleep(parse_double(duration)); XBT_VERB("%s %f ", name, MSG_get_clock() - clock); - if (XBT_LOG_ISENABLED(actions, xbt_log_priority_verbose)) - free(name); + free(name); } static void action_allReduce(const char *const *action) { @@ -401,7 +397,7 @@ static void action_allReduce(const char *const *action) { process_globals_t counters = (process_globals_t) MSG_process_get_data(MSG_process_self()); - xbt_assert0(communicator_size, "Size of Communicator is not defined, " + xbt_assert(communicator_size, "Size of Communicator is not defined, " "can't use collective operations"); process_name = MSG_process_get_name(MSG_process_self()); @@ -471,8 +467,7 @@ static void action_comm_size(const char *const *action) name = xbt_str_join_array(action, " "); communicator_size = parse_double(size); XBT_VERB("%s %f", name, MSG_get_clock() - clock); - if (XBT_LOG_ISENABLED(actions, xbt_log_priority_verbose)) - free(name); + free(name); } static void action_compute(const char *const *action) @@ -488,8 +483,7 @@ static void action_compute(const char *const *action) MSG_task_execute(task); MSG_task_destroy(task); XBT_VERB("%s %f", name, MSG_get_clock() - clock); - if (XBT_LOG_ISENABLED(actions, xbt_log_priority_verbose)) - free(name); + free(name); } static void action_init(const char *const *action) @@ -525,8 +519,6 @@ int main(int argc, char *argv[]) { MSG_error_t res = MSG_OK; - smx_factory_initializer_to_use = SIMIX_ctx_raw_factory_init; - /* Check the given arguments */ MSG_global_init(&argc, argv); if (argc < 3) {