-/* Copyright (c) 2004-2020. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2004-2022. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
id_ = counter++;
set_data(data);
if (MC_is_active())
- MC_ignore_heap(&(id_), sizeof(id_));
+ MC_ignore_heap(&id_, sizeof id_);
}
Task::Task(const std::string& name, std::vector<s4u::Host*>&& hosts, std::vector<double>&& flops_amount,
s4u::CommPtr Task::send_async(const std::string& alias, void_f_pvoid_t cleanup, bool detached)
{
if (TRACE_actor_is_enabled()) {
- container_t process_container = instr::Container::by_name(instr_pid(*MSG_process_self()));
+ auto* process_container = instr::Container::by_name(instr_pid(*MSG_process_self()));
std::string key = std::string("p") + std::to_string(get_id());
- instr::Container::get_root()->get_link("ACTOR_TASK_LINK")->start_event(process_container, "SR", key);
+ instr::Container::get_root()->get_link("ACTOR_LINK")->start_event(process_container, "SR", key);
}
/* Prepare the task to send */
*
* A constructor for #msg_task_t taking six arguments.
*
- * \rst
- * See :cpp:func:`void simgrid::s4u::this_actor::parallel_execute(int, s4u::Host**, double*, double*)` for
+ * @beginrst
+ * See :ref:`simgrid::s4u::this_actor::parallel_execute() <API_s4u_parallel_execute>` for
* the exact semantic of the parameters.
- * \endrst
+ * @endrst
*
* @param name a name for the object. It is for user-level information and can be nullptr.
* @param host_nb the number of hosts implied in the parallel task.
/** @brief Return the user data of the given task */
void* MSG_task_get_data(const_msg_task_t task)
{
- return task->get_data();
+ return task->get_data<void>();
}
/** @brief Sets the user data of a given task */
}
if (TRACE_actor_is_enabled() && ret != MSG_HOST_FAILURE && ret != MSG_TRANSFER_FAILURE && ret != MSG_TIMEOUT) {
- container_t process_container = simgrid::instr::Container::by_name(instr_pid(*MSG_process_self()));
+ auto* process_container = simgrid::instr::Container::by_name(instr_pid(*MSG_process_self()));
std::string key = std::string("p") + std::to_string((*task)->get_id());
- simgrid::instr::Container::get_root()->get_link("ACTOR_TASK_LINK")->end_event(process_container, "SR", key);
+ simgrid::instr::Container::get_root()->get_link("ACTOR_LINK")->end_event(process_container, "SR", key);
}
return ret;
}
*/
int MSG_task_listen_from(const char* alias)
{
- /* looks inside the rdv directly. Not clean. */
- simgrid::kernel::activity::CommImplPtr comm = simgrid::s4u::Mailbox::by_name(alias)->front();
-
- if (comm && comm->src_actor_)
- return comm->src_actor_->get_pid();
- else
- return -1;
+ return simgrid::s4u::Mailbox::by_name(alias)->listen_from();
}
/** @brief Destroys the given task.
*/
double MSG_task_get_flops_amount(const_msg_task_t task)
{
- if (task->compute != nullptr) {
+ if (task->compute != nullptr && task->compute->get_state() == simgrid::s4u::Activity::State::STARTED) {
return task->compute->get_remaining();
} else {
// Not started or already done.
*/
double MSG_task_get_remaining_communication(const_msg_task_t task)
{
- XBT_DEBUG("calling simcall_communication_get_remains(%p)", task->comm.get());
+ XBT_DEBUG("calling s4u::Comm::get_remaining (%p)", task->comm.get());
return task->comm->get_remaining();
}
* (or with #TRACE_category_with_color).
*
* @beginrst
- * See :ref:`outcomes_vizu` for details on how to trace the (categorized) resource utilization.
+ * See :ref:`outcome_vizu` for details on how to trace the (categorized) resource utilization.
* @endrst
*
* @param task the task that is going to be categorized
* @param category the name of the category to be associated to the task
- *
- * @see MSG_task_get_category, TRACE_category, TRACE_category_with_color
*/
void MSG_task_set_category(msg_task_t task, const char* category)
{