typedef struct msg_task {
simdata_task_t simdata; /**< @brief simulator data */
- void* data; /**< @brief user data */
long long int counter; /* task unique identifier for instrumentation */
} s_msg_task_t;
class Task {
std::string name_ = "";
std::string tracing_category_ = "";
+ void* userdata_ = nullptr;
public:
~Task();
- explicit Task(std::string name, double flops_amount, double bytes_amount)
- : name_(std::move(name)), flops_amount(flops_amount), bytes_amount(bytes_amount)
+ explicit Task(std::string name, double flops_amount, double bytes_amount, void* data)
+ : name_(std::move(name)), userdata_(data), flops_amount(flops_amount), bytes_amount(bytes_amount)
{
}
void set_used();
void set_tracing_category(const char* category) { tracing_category_ = category ? std::string(category) : ""; }
const std::string& get_tracing_category() { return tracing_category_; }
bool has_tracing_category() { return not tracing_category_.empty(); }
+ void* get_user_data() { return userdata_; }
+ void set_user_data(void* data) { userdata_ = data; }
kernel::activity::ExecImplPtr compute = nullptr; /* SIMIX modeling of computation */
s4u::CommPtr comm = nullptr; /* S4U modeling of communication */
msg_task_t task = new s_msg_task_t;
/* Simulator Data */
- task->simdata = new simgrid::msg::Task(name ? name : "", flop_amount, message_size);
+ task->simdata = new simgrid::msg::Task(name ? name : "", flop_amount, message_size, data);
/* Task structure */
- task->data = data;
task->counter = counter++;
if (MC_is_active())
}
/** @brief Return the user data of the given task */
-void *MSG_task_get_data(msg_task_t task)
+void* MSG_task_get_data(msg_task_t task)
{
- return (task->data);
+ return (task->simdata->get_user_data());
}
/** @brief Sets the user data of a given task */
void MSG_task_set_data(msg_task_t task, void *data)
{
- task->data = data;
+ task->simdata->set_user_data(data);
}
/** @brief Sets a function to be called when a task has just been copied.