+/** \ingroup m_task_management
+ * \brief Returns the computation amount needed to process a task #m_task_t.
+ * Once a task has been processed, this amount is thus set to 0...
+ */
+double MSG_task_get_compute_duration(m_task_t task)
+{
+ xbt_assert0((task != NULL)
+ && (task->simdata != NULL), "Invalid parameter");
+
+ return task->simdata->computation_amount;
+}
+
+/** \ingroup m_task_management
+ * \brief Returns the remaining computation amount of a task #m_task_t.
+ *
+ */
+double MSG_task_get_remaining_computation(m_task_t task)
+{
+ xbt_assert0((task != NULL)
+ && (task->simdata != NULL), "Invalid parameter");
+
+ if (task->simdata->compute) {
+ return SIMIX_action_get_remains(task->simdata->compute);
+ } else {
+ return task->simdata->computation_amount;
+ }
+}
+
+
+
+/** \ingroup m_task_management
+ * \brief Returns the total amount received by a task #m_task_t.
+ *
+ */
+double MSG_task_get_remaining_communication(m_task_t task)
+{
+ xbt_assert0((task != NULL)
+ && (task->simdata != NULL), "Invalid parameter");
+
+ return SIMIX_communication_get_remains(task->simdata->comm);
+}
+
+/** \ingroup m_task_management
+ * \brief Returns the size of the data attached to a task #m_task_t.
+ *
+ */
+double MSG_task_get_data_size(m_task_t task)
+{
+ xbt_assert0((task != NULL)
+ && (task->simdata != NULL), "Invalid parameter");
+
+ return task->simdata->message_size;
+}
+
+
+
+/** \ingroup m_task_management
+ * \brief Changes the priority of a computation task. This priority doesn't affect
+ * the transfer rate. A priority of 2 will make a task receive two times more
+ * cpu power than the other ones.
+ *
+ */
+void MSG_task_set_priority(m_task_t task, double priority)
+{
+ xbt_assert0((task != NULL)
+ && (task->simdata != NULL), "Invalid parameter");
+
+ task->simdata->priority = 1 / priority;
+ if (task->simdata->compute)
+ SIMIX_action_set_priority(task->simdata->compute,
+ task->simdata->priority);