e_smx_state_t comp_state;
msg_error_t status = MSG_OK;
- TRACE_msg_task_execute_start(task);
xbt_assert((not simdata->compute) && not task->simdata->isused,
"This task is executed somewhere else. Go fix your code!");
XBT_DEBUG("Computing on %s", MSG_process_get_name(MSG_process_self()));
if (simdata->flops_amount <= 0.0 && not simdata->host_nb) {
- TRACE_msg_task_execute_end(task);
return MSG_OK;
}
+ if (TRACE_actor_is_enabled())
+ simgrid::instr::Container::by_name(instr_pid(MSG_process_self()))->get_state("ACTOR_STATE")->push_event("execute");
+
try {
simdata->setUsed();
status = MSG_HOST_FAILURE;
} catch (simgrid::TimeoutError& e) {
status = MSG_TIMEOUT;
- } catch (xbt_ex& e) {
- if (e.category == cancel_error)
- status = MSG_TASK_CANCELED;
- else
- throw;
+ } catch (simgrid::CancelException& e) {
+ status = MSG_TASK_CANCELED;
}
/* action ended, set comm and compute = nullptr, the actions is already destroyed in the main function */
simdata->flops_amount = 0.0;
simdata->comm = nullptr;
simdata->compute = nullptr;
- TRACE_msg_task_execute_end(task);
+
+ if (TRACE_actor_is_enabled())
+ simgrid::instr::Container::by_name(instr_pid(MSG_process_self()))->get_state("ACTOR_STATE")->pop_event();
return status;
}
ret = MSG_HOST_FAILURE;
} catch (simgrid::TimeoutError& e) {
ret = MSG_TIMEOUT;
+ } catch (simgrid::CancelException& e) {
+ ret = MSG_HOST_FAILURE;
} catch (xbt_ex& e) {
- switch (e.category) {
- case cancel_error:
- ret = MSG_HOST_FAILURE;
- break;
- case network_error:
+ if (e.category == network_error)
ret = MSG_TRANSFER_FAILURE;
- break;
- default:
+ else
throw;
- }
}
if (ret != MSG_HOST_FAILURE && ret != MSG_TRANSFER_FAILURE && ret != MSG_TIMEOUT) {
simcall_comm_wait(comm, timeout);
} catch (simgrid::TimeoutError& e) {
ret = MSG_TIMEOUT;
- }
- catch (xbt_ex& e) {
- switch (e.category) {
- case cancel_error:
- ret = MSG_HOST_FAILURE;
- break;
- case network_error:
+ } catch (simgrid::CancelException& e) {
+ ret = MSG_HOST_FAILURE;
+ } catch (xbt_ex& e) {
+ if (e.category == network_error)
ret = MSG_TRANSFER_FAILURE;
- break;
- default:
+ else
throw;
- }
/* If the send failed, it is not used anymore */
t_simdata->setNotUsed();