From 7d06231bf31deb78e97d5f2408e300c0e4f55af1 Mon Sep 17 00:00:00 2001 From: Frederic Suter Date: Mon, 25 Feb 2019 15:19:50 +0100 Subject: [PATCH] move name from msg_task_t to simgrid::msg::Task --- include/simgrid/msg.h | 1 - src/msg/msg_gos.cpp | 17 +++++++++-------- src/msg/msg_private.hpp | 10 +++++++++- src/msg/msg_task.cpp | 8 +++----- 4 files changed, 21 insertions(+), 15 deletions(-) diff --git a/include/simgrid/msg.h b/include/simgrid/msg.h index efaba4ec5a..47da526f94 100644 --- a/include/simgrid/msg.h +++ b/include/simgrid/msg.h @@ -240,7 +240,6 @@ typedef sg_msg_Comm* msg_comm_t; /* ******************************** Task ************************************ */ typedef struct msg_task { - char* name; /**< @brief task name if any */ simdata_task_t simdata; /**< @brief simulator data */ void* data; /**< @brief user data */ long long int counter; /* task unique identifier for instrumentation */ diff --git a/src/msg/msg_gos.cpp b/src/msg/msg_gos.cpp index 1ca2db5e9d..d73f7fd524 100644 --- a/src/msg/msg_gos.cpp +++ b/src/msg/msg_gos.cpp @@ -64,8 +64,8 @@ msg_error_t MSG_parallel_task_execute_with_timeout(msg_task_t task, double timeo if (simdata->host_nb > 0) { simdata->compute = boost::static_pointer_cast(simcall_execution_parallel_start( - task->name ?: "", simdata->host_nb, simdata->host_list, simdata->flops_parallel_amount, - simdata->bytes_parallel_amount, -1.0, timeout)); + std::move(task->simdata->get_name()), simdata->host_nb, simdata->host_list, + simdata->flops_parallel_amount, simdata->bytes_parallel_amount, -1.0, timeout)); XBT_DEBUG("Parallel execution action created: %p", simdata->compute.get()); if (task->category != nullptr) simgrid::simix::simcall([task] { task->simdata->compute->set_category(task->category); }); @@ -73,7 +73,7 @@ msg_error_t MSG_parallel_task_execute_with_timeout(msg_task_t task, double timeo sg_host_t host = MSG_process_get_host(MSG_process_self()); simdata->compute = simgrid::simix::simcall([task, host] { return simgrid::kernel::activity::ExecImplPtr( - new simgrid::kernel::activity::ExecImpl(task->name ?: "", task->category ?: "", host)); + new simgrid::kernel::activity::ExecImpl(std::move(task->simdata->get_name()), task->category ?: "", host)); }); /* checking for infinite values */ xbt_assert(std::isfinite(simdata->flops_amount), "flops_amount is not finite!"); @@ -86,7 +86,7 @@ msg_error_t MSG_parallel_task_execute_with_timeout(msg_task_t task, double timeo simdata->set_not_used(); - XBT_DEBUG("Execution task '%s' finished in state %d", task->name, (int)comp_state); + XBT_DEBUG("Execution task '%s' finished in state %d", task->simdata->get_cname(), (int)comp_state); } catch (simgrid::HostFailureException& e) { status = MSG_HOST_FAILURE; } catch (simgrid::TimeoutError& e) { @@ -251,7 +251,7 @@ msg_error_t MSG_task_receive_ext_bounded(msg_task_t * task, const char *alias, d ->set_rate(rate) ->wait_for(timeout); *task = static_cast(payload); - XBT_DEBUG("Got task %s from %s", (*task)->name, alias); + XBT_DEBUG("Got task %s from %s", (*task)->simdata->get_cname(), alias); (*task)->simdata->set_not_used(); } catch (simgrid::HostFailureException& e) { ret = MSG_HOST_FAILURE; @@ -816,17 +816,18 @@ int MSG_task_listen_from(const char *alias) */ void MSG_task_set_category (msg_task_t task, const char *category) { - xbt_assert(task->category == nullptr, "Task %p(%s) already has a category (%s).", task, task->name, task->category); + xbt_assert(task->category == nullptr, "Task %p(%s) already has a category (%s).", task, task->simdata->get_cname(), + task->category); // if user provides a nullptr category, task is no longer traced if (category == nullptr) { xbt_free(task->category); task->category = nullptr; - XBT_DEBUG("MSG task %p(%s), category removed", task, task->name); + XBT_DEBUG("MSG task %p(%s), category removed", task, task->simdata->get_cname()); } else { // set task category task->category = xbt_strdup(category); - XBT_DEBUG("MSG task %p(%s), category %s", task, task->name, task->category); + XBT_DEBUG("MSG task %p(%s), category %s", task, task->simdata->get_cname(), task->category); } } diff --git a/src/msg/msg_private.hpp b/src/msg/msg_private.hpp index 847d59525c..2a494cfa2e 100644 --- a/src/msg/msg_private.hpp +++ b/src/msg/msg_private.hpp @@ -15,12 +15,20 @@ namespace simgrid { namespace msg { class Task { + std::string name_ = ""; /**< @brief task name if any */ public: ~Task(); - explicit Task(double flops_amount, double bytes_amount) : flops_amount(flops_amount), bytes_amount(bytes_amount) {} + explicit Task(std::string name, double flops_amount, double bytes_amount) + : name_(std::move(name)), flops_amount(flops_amount), bytes_amount(bytes_amount) + { + } void set_used(); void set_not_used() { this->is_used = false; } + const std::string& get_name() const { return name_; } + const char* get_cname() { return name_.c_str(); } + void set_name(const char* new_name) { name_ = std::string(new_name); } + kernel::activity::ExecImplPtr compute = nullptr; /* SIMIX modeling of computation */ s4u::CommPtr comm = nullptr; /* S4U modeling of communication */ double flops_amount = 0.0; /* Computation size */ diff --git a/src/msg/msg_task.cpp b/src/msg/msg_task.cpp index 7eb541ae33..c55ae4f6b3 100644 --- a/src/msg/msg_task.cpp +++ b/src/msg/msg_task.cpp @@ -65,10 +65,9 @@ msg_task_t MSG_task_create(const char *name, double flop_amount, double message_ msg_task_t task = new s_msg_task_t; /* Simulator Data */ - task->simdata = new simgrid::msg::Task(flop_amount, message_size); + task->simdata = new simgrid::msg::Task(name ? name : "", flop_amount, message_size); /* Task structure */ - task->name = xbt_strdup(name); task->data = data; task->counter = counter++; @@ -164,13 +163,13 @@ msg_host_t MSG_task_get_source(msg_task_t task) /** @brief Returns the name of the given task. */ const char *MSG_task_get_name(msg_task_t task) { - return task->name; + return task->simdata->get_cname(); } /** @brief Sets the name of the given task. */ void MSG_task_set_name(msg_task_t task, const char *name) { - task->name = xbt_strdup(name); + task->simdata->set_name(name); } /** @brief Destroys the given task. @@ -191,7 +190,6 @@ msg_error_t MSG_task_destroy(msg_task_t task) } xbt_free(task->category); - xbt_free(task->name); /* free main structures */ delete task->simdata; -- 2.20.1