Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
move name from msg_task_t to simgrid::msg::Task
authorFrederic Suter <frederic.suter@cc.in2p3.fr>
Mon, 25 Feb 2019 14:19:50 +0000 (15:19 +0100)
committerFrederic Suter <frederic.suter@cc.in2p3.fr>
Mon, 25 Feb 2019 14:19:50 +0000 (15:19 +0100)
include/simgrid/msg.h
src/msg/msg_gos.cpp
src/msg/msg_private.hpp
src/msg/msg_task.cpp

index efaba4e..47da526 100644 (file)
@@ -240,7 +240,6 @@ typedef sg_msg_Comm* msg_comm_t;
 /* ******************************** Task ************************************ */
 
 typedef struct msg_task {
 /* ******************************** 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 */
   simdata_task_t simdata; /**< @brief simulator data */
   void* data;             /**< @brief user data */
   long long int counter;  /* task unique identifier for instrumentation */
index 1ca2db5..d73f7fd 100644 (file)
@@ -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<simgrid::kernel::activity::ExecImpl>(simcall_execution_parallel_start(
     if (simdata->host_nb > 0) {
       simdata->compute =
           boost::static_pointer_cast<simgrid::kernel::activity::ExecImpl>(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); });
       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(
       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!");
       });
       /* 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();
 
 
     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) {
   } 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<msg_task_t>(payload);
         ->set_rate(rate)
         ->wait_for(timeout);
     *task = static_cast<msg_task_t>(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;
     (*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)
 {
  */
 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;
 
   // 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);
   } 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);
   }
 }
 
   }
 }
 
index 847d595..2a494cf 100644 (file)
 namespace simgrid {
 namespace msg {
 class Task {
 namespace simgrid {
 namespace msg {
 class Task {
+  std::string name_ = ""; /**< @brief task name if any */
 public:
   ~Task();
 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; }
 
   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 */
   kernel::activity::ExecImplPtr compute          = nullptr; /* SIMIX modeling of computation */
   s4u::CommPtr comm                              = nullptr; /* S4U modeling of communication */
   double flops_amount                            = 0.0;     /* Computation size */
index 7eb541a..c55ae4f 100644 (file)
@@ -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 */
 
   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 structure */
-  task->name = xbt_strdup(name);
   task->data = data;
 
   task->counter  = counter++;
   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)
 {
 /** @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)
 {
 }
 
 /** @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.
 }
 
 /** @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->category);
-  xbt_free(task->name);
 
   /* free main structures */
   delete task->simdata;
 
   /* free main structures */
   delete task->simdata;