X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/0d5351be580847fc5bed5dac18aaa391871ec725..f4200e5d5322e9e2fef74725fb43c605876212d8:/examples/msg/actions-comm/actions-comm.c diff --git a/examples/msg/actions-comm/actions-comm.c b/examples/msg/actions-comm/actions-comm.c index 0d2d6461a4..f840d898de 100644 --- a/examples/msg/actions-comm/actions-comm.c +++ b/examples/msg/actions-comm/actions-comm.c @@ -1,5 +1,4 @@ -/* Copyright (c) 2009-2015. The SimGrid Team. - * All rights reserved. */ +/* Copyright (c) 2009-2016. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -8,25 +7,6 @@ #include "simgrid/simix.h" /* semaphores for the barrier */ #include -/** @addtogroup MSG_examples - * - * @section MSG_ex_actions Trace driven simulations - * - * The actions/actions.c example demonstrates how to run trace-driven simulations. It is very handy when you - * want to test an algorithm or protocol that does nothing unless it receives some events from outside. For example, - * a P2P protocol reacts to requests from the user, but does nothing if there is no such event. - * - * In such situations, SimGrid allows to write your protocol in your C file, and the events to react to in a separate - * text file. Declare a function handling each of the events that you want to accept in your trace files, register - * them using \ref xbt_replay_action_register in your main, and then use \ref MSG_action_trace_run to launch the - * simulation. You can either have one trace file containing all your events, or a file per simulated process. Check - * the tesh files in the example directory for details on how to do it. - * - * This example uses this approach to replay MPI-like traces. It comes with a set of event handlers reproducing MPI - * events. This is somehow similar to SMPI, yet differently implemented. This code should probably be changed to use - * SMPI internals instead, but wasn't, so far. - */ - XBT_LOG_NEW_DEFAULT_CATEGORY(actions, "Messages specific for this msg example"); int communicator_size = 0; @@ -35,8 +15,6 @@ static void action_Isend(const char *const *action); typedef struct { int last_Irecv_sender_id; int bcast_counter; - int reduce_counter; - int allReduce_counter; xbt_dynar_t isends; /* of msg_comm_t */ /* Used to implement irecv+wait */ xbt_dynar_t irecvs; /* of msg_comm_t */ @@ -212,33 +190,30 @@ static void action_barrier(const char *const *action) static void action_bcast(const char *const *action) { - int i; - char *bcast_identifier; char mailbox[80]; double comm_size = parse_double(action[2]); msg_task_t task = NULL; - const char *process_name; double clock = MSG_get_clock(); process_globals_t counters = (process_globals_t) MSG_process_get_data(MSG_process_self()); xbt_assert(communicator_size, "Size of Communicator is not defined, can't use collective operations"); - process_name = MSG_process_get_name(MSG_process_self()); + const char * process_name = MSG_process_get_name(MSG_process_self()); - bcast_identifier = bprintf("bcast_%d", counters->bcast_counter++); + char *bcast_identifier = bprintf("bcast_%d", counters->bcast_counter++); if (!strcmp(process_name, "p0")) { XBT_DEBUG("%s: %s is the Root", bcast_identifier, process_name); msg_comm_t *comms = xbt_new0(msg_comm_t, communicator_size - 1); - for (i = 1; i < communicator_size; i++) { + for (int i = 1; i < communicator_size; i++) { sprintf(mailbox, "%s_p0_p%d", bcast_identifier, i); comms[i - 1] = MSG_task_isend(MSG_task_create(mailbox, 0, comm_size, NULL), mailbox); } MSG_comm_waitall(comms, communicator_size - 1, -1); - for (i = 1; i < communicator_size; i++) + for (int i = 1; i < communicator_size; i++) MSG_comm_destroy(comms[i - 1]); xbt_free(comms); @@ -297,7 +272,6 @@ static void action_finalize(const char *const *action) } } -/** Main function */ int main(int argc, char *argv[]) { msg_error_t res = MSG_OK; @@ -336,8 +310,7 @@ int main(int argc, char *argv[]) XBT_INFO("Simulation time %g", MSG_get_clock()); - /* Explicit finalization of the action module is required now*/ - MSG_action_exit(); + MSG_action_exit(); /* Explicit finalization of the action module */ return res != MSG_OK; }