void SIMIX_network_init(void)
{
- rdv_points = xbt_dict_new();
+ rdv_points = xbt_dict_new_homogeneous(SIMIX_rdv_free);
}
void SIMIX_network_exit(void)
rdv->comm_fifo = xbt_fifo_new();
if (rdv->name)
- xbt_dict_set(rdv_points, rdv->name, rdv, SIMIX_rdv_free);
+ xbt_dict_set(rdv_points, rdv->name, rdv, NULL);
}
return rdv;
}
*/
void SIMIX_comm_finish(smx_action_t action)
{
- unsigned int destroy_count = 0;
+ volatile unsigned int destroy_count = 0;
smx_req_t req;
while ((req = xbt_fifo_shift(action->request_list))) {
}
req->issuer->waiting_action = NULL;
+ xbt_fifo_remove(req->issuer->comms, action);
SIMIX_request_answer(req);
destroy_count++;
}
if (buff_size == 0)
return;
- (*SIMIX_comm_copy_data_callback) (comm, buff_size);
+ SIMIX_comm_copy_data_callback(comm, buff_size);
/* Set the copied flag so we copy data only once */
/* (this function might be called from both communication ends) */