Logo AND Algorithmique Numérique Distribuée

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

index 47da526..9a0d2cf 100644 (file)
@@ -243,7 +243,6 @@ 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 */
   simdata_task_t simdata; /**< @brief simulator data */
   void* data;             /**< @brief user data */
   long long int counter;  /* task unique identifier for instrumentation */
-  char* category;         /* task category for instrumentation */
 } s_msg_task_t;
 
 /** @brief Task datatype.
 } s_msg_task_t;
 
 /** @brief Task datatype.
index 90fa914..bd2a503 100644 (file)
@@ -15,7 +15,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(instr_msg, instr, "MSG instrumentation");
 /* MSG_task_put related functions */
 void TRACE_msg_task_put_start(msg_task_t task)
 {
 /* MSG_task_put related functions */
 void TRACE_msg_task_put_start(msg_task_t task)
 {
-  XBT_DEBUG("PUT,in %p, %lld, %s", task, task->counter, task->category);
+  XBT_DEBUG("PUT,in %p, %lld, %s", task, task->counter, task->simdata->get_tracing_category().c_str());
 
   if (TRACE_actor_is_enabled()) {
     container_t process_container = simgrid::instr::Container::by_name(instr_pid(MSG_process_self()));
 
   if (TRACE_actor_is_enabled()) {
     container_t process_container = simgrid::instr::Container::by_name(instr_pid(MSG_process_self()));
index d73f7fd..afae6c3 100644 (file)
@@ -67,13 +67,14 @@ msg_error_t MSG_parallel_task_execute_with_timeout(msg_task_t task, double timeo
               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());
               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); });
+      if (task->simdata->has_tracing_category())
+        simgrid::simix::simcall(
+            [task] { task->simdata->compute->set_category(std::move(task->simdata->get_tracing_category())); });
     } else {
       sg_host_t host   = MSG_process_get_host(MSG_process_self());
       simdata->compute = simgrid::simix::simcall([task, host] {
     } else {
       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(std::move(task->simdata->get_name()), task->category ?: "", host));
+        return simgrid::kernel::activity::ExecImplPtr(new simgrid::kernel::activity::ExecImpl(
+            std::move(task->simdata->get_name()), std::move(task->simdata->get_tracing_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!");
@@ -303,8 +304,9 @@ static inline msg_comm_t MSG_task_isend_internal(msg_task_t task, const char* al
     msg_comm = new simgrid::msg::Comm(task, nullptr, comm);
   }
 
     msg_comm = new simgrid::msg::Comm(task, nullptr, comm);
   }
 
-  if (TRACE_is_enabled() && task->category != nullptr)
-    simgrid::simix::simcall([comm, task] { comm->get_impl()->set_category(task->category); });
+  if (TRACE_is_enabled() && task->simdata->has_tracing_category())
+    simgrid::simix::simcall(
+        [comm, task] { comm->get_impl()->set_category(std::move(task->simdata->get_tracing_category())); });
 
   return msg_comm;
 }
 
   return msg_comm;
 }
@@ -740,8 +742,9 @@ msg_error_t MSG_task_send_with_timeout(msg_task_t task, const char *alias, doubl
         simgrid::s4u::Mailbox::by_name(alias)->put_init(task, t_simdata->bytes_amount)->set_rate(t_simdata->rate);
     t_simdata->comm = comm;
     comm->start();
         simgrid::s4u::Mailbox::by_name(alias)->put_init(task, t_simdata->bytes_amount)->set_rate(t_simdata->rate);
     t_simdata->comm = comm;
     comm->start();
-    if (TRACE_is_enabled() && task->category != nullptr)
-      simgrid::simix::simcall([comm, task] { comm->get_impl()->set_category(task->category); });
+    if (TRACE_is_enabled() && task->simdata->has_tracing_category())
+      simgrid::simix::simcall(
+          [comm, task] { comm->get_impl()->set_category(std::move(task->simdata->get_tracing_category())); });
     comm->wait_for(timeout);
   } catch (simgrid::TimeoutError& e) {
     ret = MSG_TIMEOUT;
     comm->wait_for(timeout);
   } catch (simgrid::TimeoutError& e) {
     ret = MSG_TIMEOUT;
@@ -816,18 +819,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->simdata->get_cname(),
-             task->category);
+  xbt_assert(not task->simdata->has_tracing_category(), "Task %p(%s) already has a category (%s).", task,
+             task->simdata->get_cname(), task->simdata->get_tracing_category().c_str());
 
   // if user provides a nullptr category, task is no longer traced
   if (category == nullptr) {
 
   // if user provides a nullptr category, task is no longer traced
   if (category == nullptr) {
-    xbt_free(task->category);
-    task->category = nullptr;
+    task->simdata->set_tracing_category("");
     XBT_DEBUG("MSG task %p(%s), category removed", task, task->simdata->get_cname());
   } else {
     // set task category
     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->simdata->get_cname(), task->category);
+    task->simdata->set_tracing_category(category);
+    XBT_DEBUG("MSG task %p(%s), category %s", task, task->simdata->get_cname(),
+              task->simdata->get_tracing_category().c_str());
   }
 }
 
   }
 }
 
@@ -842,5 +845,5 @@ void MSG_task_set_category (msg_task_t task, const char *category)
  */
 const char *MSG_task_get_category (msg_task_t task)
 {
  */
 const char *MSG_task_get_category (msg_task_t task)
 {
-  return task->category;
+  return task->simdata->get_tracing_category().c_str();
 }
 }
index 2a494cf..01ec91a 100644 (file)
@@ -15,7 +15,9 @@
 namespace simgrid {
 namespace msg {
 class Task {
 namespace simgrid {
 namespace msg {
 class Task {
-  std::string name_ = ""; /**< @brief task name if any */
+  std::string name_             = "";
+  std::string tracing_category_ = "";
+
 public:
   ~Task();
   explicit Task(std::string name, double flops_amount, double bytes_amount)
 public:
   ~Task();
   explicit Task(std::string name, double flops_amount, double bytes_amount)
@@ -28,6 +30,9 @@ public:
   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); }
   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); }
+  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(); }
 
   kernel::activity::ExecImplPtr compute          = nullptr; /* SIMIX modeling of computation */
   s4u::CommPtr comm                              = nullptr; /* S4U modeling of communication */
 
   kernel::activity::ExecImplPtr compute          = nullptr; /* SIMIX modeling of computation */
   s4u::CommPtr comm                              = nullptr; /* S4U modeling of communication */
index c55ae4f..c4ad363 100644 (file)
@@ -69,9 +69,7 @@ msg_task_t MSG_task_create(const char *name, double flop_amount, double message_
 
   /* Task structure */
   task->data = data;
 
   /* Task structure */
   task->data = data;
-
   task->counter  = counter++;
   task->counter  = counter++;
-  task->category = nullptr;
 
   if (MC_is_active())
     MC_ignore_heap(&(task->counter), sizeof(task->counter));
 
   if (MC_is_active())
     MC_ignore_heap(&(task->counter), sizeof(task->counter));
@@ -189,8 +187,6 @@ msg_error_t MSG_task_destroy(msg_task_t task)
     MSG_task_cancel(task);
   }
 
     MSG_task_cancel(task);
   }
 
-  xbt_free(task->category);
-
   /* free main structures */
   delete task->simdata;
   delete task;
   /* free main structures */
   delete task->simdata;
   delete task;