/* Used to implement irecv+wait */
xbt_dynar_t irecvs; /* of msg_comm_t */
xbt_dynar_t tasks; /* of msg_task_t */
-} s_process_globals_t, *process_globals_t;
+} s_process_globals_t;
+
+typedef s_process_globals_t *process_globals_t;
/* Helper function */
static double parse_double(const char *string)
ACT_DEBUG("Entering barrier: %s (%d already there)", NAME, processes_arrived_sofar);
simcall_mutex_lock(mutex);
- if (++processes_arrived_sofar == communicator_size) {
+ processes_arrived_sofar++;
+ if (processes_arrived_sofar == communicator_size) {
simcall_cond_broadcast(cond);
simcall_mutex_unlock(mutex);
} else {
const char * process_name = MSG_process_get_name(MSG_process_self());
- char *bcast_identifier = bprintf("bcast_%d", counters->bcast_counter++);
+ char *bcast_identifier = bprintf("bcast_%d", counters->bcast_counter);
+ counters->bcast_counter++;
if (!strcmp(process_name, "p0")) {
XBT_DEBUG("%s: %s is the Root", bcast_identifier, process_name);
int main(int argc, char *argv[])
{
- msg_error_t res = MSG_OK;
-
/* Check the given arguments */
MSG_init(&argc, argv);
/* Explicit initialization of the action module is required now*/
xbt_replay_action_register("compute", action_compute);
/* Actually do the simulation using MSG_action_trace_run */
- res = MSG_action_trace_run(argv[3]); // it's ok to pass a NULL argument here
+ msg_error_t res = MSG_action_trace_run(argv[3]); // it's ok to pass a NULL argument here
XBT_INFO("Simulation time %g", MSG_get_clock());