xbt_free (task->category);
task->category = nullptr;
XBT_DEBUG("MSG task %p(%s), category removed", task, task->name);
- return;
+ } else {
+ // set task category
+ task->category = xbt_strdup(category);
+ XBT_DEBUG("MSG task %p(%s), category %s", task, task->name, task->category);
}
-
- //set task category
- task->category = xbt_strdup (category);
- XBT_DEBUG("MSG task %p(%s), category %s", task, task->name, task->category);
-}
-
-/* MSG_task_create related function*/
-void TRACE_msg_task_create(msg_task_t task)
-{
- static std::atomic_ullong counter{0};
- task->counter = counter++;
- task->category = nullptr;
-
- if(MC_is_active())
- MC_ignore_heap(&(task->counter), sizeof(task->counter));
-
- XBT_DEBUG("CREATE %p, %lld", task, task->counter);
-}
-
-/* MSG_task_execute related functions */
-void TRACE_msg_task_execute_start(msg_task_t task)
-{
- XBT_DEBUG("EXEC,in %p, %lld, %s", task, task->counter, task->category);
-
- if (TRACE_actor_is_enabled())
- simgrid::instr::Container::by_name(instr_pid(MSG_process_self()))->get_state("ACTOR_STATE")->push_event("execute");
-}
-
-void TRACE_msg_task_execute_end(msg_task_t task)
-{
- XBT_DEBUG("EXEC,out %p, %lld, %s", task, task->counter, task->category);
-
- if (TRACE_actor_is_enabled())
- simgrid::instr::Container::by_name(instr_pid(MSG_process_self()))->get_state("ACTOR_STATE")->pop_event();
-}
-
-/* MSG_task_destroy related functions */
-void TRACE_msg_task_destroy(msg_task_t task)
-{
- XBT_DEBUG("DESTROY %p, %lld, %s", task, task->counter, task->category);
-
- //free category
- xbt_free(task->category);
- task->category = nullptr;
}
/* MSG_task_get related functions */
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();
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;
}
/********** Tracing **********/
/* declaration of instrumentation functions from msg_task_instr.c */
XBT_PRIVATE void TRACE_msg_set_task_category(msg_task_t task, const char* category);
-XBT_PRIVATE void TRACE_msg_task_create(msg_task_t task);
-XBT_PRIVATE void TRACE_msg_task_execute_start(msg_task_t task);
-XBT_PRIVATE void TRACE_msg_task_execute_end(msg_task_t task);
-XBT_PRIVATE void TRACE_msg_task_destroy(msg_task_t task);
XBT_PRIVATE void TRACE_msg_task_get_end(msg_task_t task);
XBT_PRIVATE void TRACE_msg_task_get_start();
XBT_PRIVATE void TRACE_msg_task_put_start(msg_task_t task);
#include "src/simix/smx_private.hpp"
#include <algorithm>
#include <cmath>
+#include <simgrid/modelchecker.h>
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(msg_task, msg, "Logging specific to MSG (task)");
*/
msg_task_t MSG_task_create(const char *name, double flop_amount, double message_size, void *data)
{
+ static std::atomic_ullong counter{0};
+
msg_task_t task = new s_msg_task_t;
simdata_task_t simdata = new s_simdata_task_t();
task->simdata = simdata;
simdata->bytes_amount = message_size;
simdata->flops_amount = flop_amount;
- TRACE_msg_task_create(task);
+ task->counter = counter++;
+ task->category = nullptr;
+
+ if (MC_is_active())
+ MC_ignore_heap(&(task->counter), sizeof(task->counter));
return task;
}
/* the task is being sent or executed: cancel it first */
MSG_task_cancel(task);
}
- TRACE_msg_task_destroy(task);
+ xbt_free(task->category);
xbt_free(task->name);
/* free main structures */