#endif
DEBUG1("Create communicate action %p", act);
-
+
return act;
}
{
DEBUG1("Destroy action %p", action);
- if(!(action->comm.refcount > 0))
- xbt_die(bprintf("the refcount of comm %p is already 0 before decreasing it. That's a bug!",action));
+ if (action->comm.refcount <= 0)
+ xbt_die(bprintf("the refcount of comm %p is already 0 before decreasing it. That's a bug!",action));
#ifdef HAVE_LATENCY_BOUND_TRACKING
//save is latency limited flag to use afterwards
if (!action) {
action = SIMIX_comm_new(SIMIX_COMM_SEND);
SIMIX_rdv_push(rdv, action);
- }else{
+ } else {
action->state = SIMIX_READY;
action->comm.type = SIMIX_COMM_READY;
}
action->comm.src_buff = src_buff;
action->comm.src_buff_size = src_buff_size;
action->comm.data = data;
-#ifdef HAVE_MC
- if(_surf_do_model_check){
+
+ if (MC_IS_ENABLED) {
action->state = SIMIX_RUNNING;
return action;
}
-#endif
+
SIMIX_comm_start(action);
return action;
}
action->comm.dst_buff = dst_buff;
action->comm.dst_buff_size = dst_buff_size;
-#ifdef HAVE_MC
- if(_surf_do_model_check){
+ if (MC_IS_ENABLED) {
action->state = SIMIX_RUNNING;
return action;
}
-#endif
SIMIX_comm_start(action);
return action;
xbt_fifo_push(action->request_list, req);
req->issuer->waiting_action = action;
-#ifdef HAVE_MC
- if(_surf_do_model_check){
+ if (MC_IS_ENABLED){
action->state = SIMIX_DONE;
SIMIX_comm_finish(action);
}
-#endif
/* If the action has already finish perform the error handling, */
/* otherwise set up a waiting timeout on the right side */
xbt_dynar_foreach(actions, cursor, action){
/* Associate this request to the action */
xbt_fifo_push(action->request_list, req);
- if(action->state != SIMIX_WAITING && action->state != SIMIX_RUNNING){
+ if (action->state != SIMIX_WAITING && action->state != SIMIX_RUNNING){
SIMIX_comm_finish(action);
break;
}
smx_host_t receiver = action->comm.dst_proc->smx_host;
DEBUG3("Starting communication %p from '%s' to '%s'", action,
- SIMIX_host_get_name(sender), SIMIX_host_get_name(receiver));
+ SIMIX_host_get_name(sender), SIMIX_host_get_name(receiver));
- action->comm.surf_comm =
- surf_workstation_model->extension.workstation.
- communicate(sender->host, receiver->host, action->comm.task_size, action->comm.rate);
+ action->comm.surf_comm = surf_workstation_model->extension.workstation.
+ communicate(sender->host, receiver->host, action->comm.task_size, action->comm.rate);
surf_workstation_model->action_data_set(action->comm.surf_comm, action);
{
smx_req_t req;
- while((req = xbt_fifo_shift(action->request_list))){
+ while ((req = xbt_fifo_shift(action->request_list))) {
/* If a waitany request is waiting for this action to finish, then remove
it from the other actions in the waitany list. Afterwards, get the
position of the actual action in the waitany request's actions dynar and
return it as the result of the call */
- if(req->call == REQ_COMM_WAITANY){
+ if (req->call == REQ_COMM_WAITANY) {
SIMIX_waitany_req_remove_from_actions(req);
req->comm_waitany.result = xbt_dynar_search(req->comm_waitany.comms, &action);
}
/* If the action is still in a rendez-vous point then remove from it */
- if(action->comm.rdv)
+ if (action->comm.rdv)
SIMIX_rdv_remove(action->comm.rdv, action);
DEBUG1("SIMIX_comm_finish: action state = %d", action->state);
case SIMIX_SRC_HOST_FAILURE:
TRY {
- if(req->issuer == action->comm.src_proc)
+ if (req->issuer == action->comm.src_proc)
THROW0(host_error, 0, "Host failed");
else
THROW0(network_error, 0, "Remote peer failed");
void SIMIX_post_comm(smx_action_t action)
{
/* Update action state */
- if(action->comm.src_timeout &&
+ if (action->comm.src_timeout &&
surf_workstation_model->action_state_get(action->comm.src_timeout) == SURF_ACTION_DONE)
action->state = SIMIX_SRC_TIMEOUT;
- else if(action->comm.dst_timeout &&
+ else if (action->comm.dst_timeout &&
surf_workstation_model->action_state_get(action->comm.dst_timeout) == SURF_ACTION_DONE)
action->state = SIMIX_DST_TIMEOUT;
- else if(action->comm.src_timeout &&
+ else if (action->comm.src_timeout &&
surf_workstation_model->action_state_get(action->comm.src_timeout) == SURF_ACTION_FAILED)
action->state = SIMIX_SRC_HOST_FAILURE;
- else if(action->comm.dst_timeout &&
+ else if (action->comm.dst_timeout &&
surf_workstation_model->action_state_get(action->comm.dst_timeout) == SURF_ACTION_FAILED)
action->state = SIMIX_DST_HOST_FAILURE;
- else if(action->comm.surf_comm &&
+ else if (action->comm.surf_comm &&
surf_workstation_model->action_state_get(action->comm.surf_comm) == SURF_ACTION_FAILED)
action->state = SIMIX_LINK_FAILURE;
else
SIMIX_comm_destroy_internal_actions(action);
/* If there are requests associated with the action, then answer them */
- if(xbt_fifo_size(action->request_list))
+ if (xbt_fifo_size(action->request_list))
SIMIX_comm_finish(action);
}
if (buff_size == 0)
return;
+
(*SIMIX_comm_copy_data_callback) (comm, buff_size);
/* Set the copied flag so we copy data only once */