Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[trace_mgr] less void*, (some) more doc
authorMartin Quinson <martin.quinson@loria.fr>
Sat, 30 Jan 2016 23:04:15 +0000 (00:04 +0100)
committerMartin Quinson <martin.quinson@loria.fr>
Sat, 30 Jan 2016 23:56:52 +0000 (00:56 +0100)
include/simgrid/forward.h
src/surf/surf_c_bindings.cpp
src/surf/trace_mgr.cpp
src/surf/trace_mgr.hpp
teshsuite/surf/trace_usage/trace_usage.cpp

index b910d90..ecab7aa 100644 (file)
@@ -16,6 +16,7 @@ namespace simgrid {
     class Host;
   }
   namespace surf {
     class Host;
   }
   namespace surf {
+    class Resource;
     class Cpu;
     class NetCard;
     class As;
     class Cpu;
     class NetCard;
     class As;
@@ -27,26 +28,29 @@ namespace simgrid {
 }
 
 typedef simgrid::s4u::Host simgrid_Host;
 }
 
 typedef simgrid::s4u::Host simgrid_Host;
+typedef simgrid::surf::As surf_As;
 typedef simgrid::surf::Cpu surf_Cpu;
 typedef simgrid::surf::NetCard surf_NetCard;
 typedef simgrid::surf::Cpu surf_Cpu;
 typedef simgrid::surf::NetCard surf_NetCard;
-typedef simgrid::surf::As surf_As;
 typedef simgrid::surf::Link Link;
 typedef simgrid::surf::Link Link;
+typedef simgrid::surf::Resource surf_Resource;
 typedef simgrid::trace_mgr::future_evt_set sg_future_evt_set;
 
 #else
 
 typedef struct simgrid_Host simgrid_Host;
 typedef simgrid::trace_mgr::future_evt_set sg_future_evt_set;
 
 #else
 
 typedef struct simgrid_Host simgrid_Host;
+typedef struct surf_As surf_As;
 typedef struct surf_Cpu surf_Cpu;
 typedef struct surf_NetCard surf_NetCard;
 typedef struct surf_Cpu surf_Cpu;
 typedef struct surf_NetCard surf_NetCard;
-typedef struct surf_As surf_As;
+typedef struct surf_Resource surf_Resource;
 typedef struct Link Link;
 typedef struct future_evt_set sg_future_evt_set;
 #endif
 
 typedef simgrid_Host* sg_host_t;
 typedef struct Link Link;
 typedef struct future_evt_set sg_future_evt_set;
 #endif
 
 typedef simgrid_Host* sg_host_t;
+typedef surf_As *AS_t;
 typedef surf_Cpu *surf_cpu_t;
 typedef surf_NetCard *sg_netcard_t;
 typedef surf_Cpu *surf_cpu_t;
 typedef surf_NetCard *sg_netcard_t;
-typedef surf_As *AS_t;
+typedef surf_Resource *sg_resource_t;
 typedef sg_future_evt_set *sg_future_evt_set_t;
 
 // Types which are in fact dictelmt:
 typedef sg_future_evt_set *sg_future_evt_set_t;
 
 // Types which are in fact dictelmt:
index ce621b9..84270bd 100644 (file)
@@ -41,9 +41,8 @@ void surf_presolve(void)
   while ((next_event_date = future_evt_set->next_date()) != -1.0) {
     if (next_event_date > NOW)
       break;
   while ((next_event_date = future_evt_set->next_date()) != -1.0) {
     if (next_event_date > NOW)
       break;
-    while ((event = future_evt_set->pop_leq(next_event_date,
-                                            &value,
-                                            (void **) &resource))) {
+
+    while ((event = future_evt_set->pop_leq(next_event_date, &value, &resource))) {
       if (value >= 0){
         resource->updateState(event, value, NOW);
       }
       if (value >= 0){
         resource->updateState(event, value, NOW);
       }
@@ -116,12 +115,12 @@ double surf_solve(double max_date)
       break;
     }
 
       break;
     }
 
-    if ((surf_min == -1.0) || (next_event_date > NOW + surf_min)) break;
+    if ((surf_min == -1.0) || (next_event_date > NOW + surf_min))
+      break;
 
     XBT_DEBUG("Updating models (min = %g, NOW = %g, next_event_date = %g)", surf_min, NOW, next_event_date);
 
     XBT_DEBUG("Updating models (min = %g, NOW = %g, next_event_date = %g)", surf_min, NOW, next_event_date);
-    while ((event = future_evt_set->pop_leq(next_event_date,
-                                            &value,
-                                            (void **) &resource))) {
+
+    while ((event = future_evt_set->pop_leq(next_event_date, &value, &resource))) {
       if (resource->isUsed() || xbt_dict_get_or_null(watched_hosts_lib, resource->getName())) {
         surf_min = next_event_date - NOW;
         XBT_DEBUG
       if (resource->isUsed() || xbt_dict_get_or_null(watched_hosts_lib, resource->getName())) {
         surf_min = next_event_date - NOW;
         XBT_DEBUG
index 4726680..d6839e3 100644 (file)
@@ -369,11 +369,9 @@ void tmgr_trace_free(tmgr_trace_t trace)
   free(trace);
 }
 
   free(trace);
 }
 
-/** Register a new trace into the future event set, and get an iterator over the integrated trace  */
+/** @brief Registers a new trace into the future event set, and get an iterator over the integrated trace  */
 tmgr_trace_iterator_t simgrid::trace_mgr::future_evt_set::add_trace(
 tmgr_trace_iterator_t simgrid::trace_mgr::future_evt_set::add_trace(
-    tmgr_trace_t trace,
-    double start_time,
-    void *resource)
+    tmgr_trace_t trace, double start_time, surf::Resource *resource)
 {
   tmgr_trace_iterator_t trace_iterator = NULL;
 
 {
   tmgr_trace_iterator_t trace_iterator = NULL;
 
@@ -392,6 +390,7 @@ tmgr_trace_iterator_t simgrid::trace_mgr::future_evt_set::add_trace(
   return trace_iterator;
 }
 
   return trace_iterator;
 }
 
+/** @brief returns the date of the next occurring event (pure function) */
 double simgrid::trace_mgr::future_evt_set::next_date()
 {
   if (xbt_heap_size(p_heap))
 double simgrid::trace_mgr::future_evt_set::next_date()
 {
   if (xbt_heap_size(p_heap))
@@ -400,10 +399,9 @@ double simgrid::trace_mgr::future_evt_set::next_date()
     return -1.0;
 }
 
     return -1.0;
 }
 
+/** @brief Retrieves the next occurring event, or NULL if none happens before #date */
 tmgr_trace_iterator_t simgrid::trace_mgr::future_evt_set::pop_leq(
 tmgr_trace_iterator_t simgrid::trace_mgr::future_evt_set::pop_leq(
-    double date,
-    double *value,
-    void** resource)
+    double date, double *value, simgrid::surf::Resource **resource)
 {
   double event_date = next_date();
   tmgr_trace_iterator_t trace_iterator = NULL;
 {
   double event_date = next_date();
   tmgr_trace_iterator_t trace_iterator = NULL;
index d4115ab..d6c6797 100644 (file)
@@ -71,7 +71,7 @@ typedef struct tmgr_trace {
 typedef struct tmgr_trace_iterator {
   tmgr_trace_t trace;
   unsigned int idx;
 typedef struct tmgr_trace_iterator {
   tmgr_trace_t trace;
   unsigned int idx;
-  void *resource;
+  sg_resource_t resource;
   int free_me;
 } s_tmgr_trace_event_t;
 
   int free_me;
 } s_tmgr_trace_event_t;
 
@@ -104,11 +104,8 @@ public:
   future_evt_set();
   virtual ~future_evt_set();
   double next_date();
   future_evt_set();
   virtual ~future_evt_set();
   double next_date();
-  tmgr_trace_iterator_t pop_leq(double date, double *value, void** resource);
-  tmgr_trace_iterator_t add_trace(
-      tmgr_trace_t trace,
-      double start_time,
-      void *model);
+  tmgr_trace_iterator_t pop_leq(double date, double *value, simgrid::surf::Resource** resource);
+  tmgr_trace_iterator_t add_trace(tmgr_trace_t trace, double start_time, simgrid::surf::Resource *resource);
 
 private:
   // TODO: use a boost type for the heap (or a ladder queue)
 
 private:
   // TODO: use a boost type for the heap (or a ladder queue)
index 3cb5899..d04fecf 100644 (file)
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
+#include "src/surf/network_cm02.hpp"
 #include "src/surf/trace_mgr.hpp"
 
 XBT_LOG_NEW_DEFAULT_CATEGORY(surf_test,
                              "Messages specific for surf example");
 
 #include "src/surf/trace_mgr.hpp"
 
 XBT_LOG_NEW_DEFAULT_CATEGORY(surf_test,
                              "Messages specific for surf example");
 
+class DummyTestResource
+    : public simgrid::surf::Resource {
+public:
+  DummyTestResource(const char *name) : Resource(nullptr,name) {}
+  bool isUsed() override {return false;}
+  void updateState(tmgr_trace_iterator_t it, double date, double value) {}
+};
+
 static void test(void)
 {
   simgrid::trace_mgr::future_evt_set *fes = new simgrid::trace_mgr::future_evt_set();
 static void test(void)
 {
   simgrid::trace_mgr::future_evt_set *fes = new simgrid::trace_mgr::future_evt_set();
@@ -25,25 +34,25 @@ static void test(void)
   tmgr_trace_t trace_B = tmgr_trace_new_from_file("trace_B.txt");
   double next_event_date = -1.0;
   double value = -1.0;
   tmgr_trace_t trace_B = tmgr_trace_new_from_file("trace_B.txt");
   double next_event_date = -1.0;
   double value = -1.0;
-  char *resource = NULL;
-  char *host_A = strdup("Host A");
-  char *host_B = strdup("Host B");
+  simgrid::surf::Resource *resource = NULL;
+  simgrid::surf::Resource *hostA = new DummyTestResource("Host A");
+  simgrid::surf::Resource *hostB = new DummyTestResource("Host B");
 
 
-  fes->add_trace(trace_A, 1.0, host_A);
-  fes->add_trace(trace_B, 0.0, host_B);
+  fes->add_trace(trace_A, 1.0, hostA);
+  fes->add_trace(trace_B, 0.0, hostB);
 
   while ((next_event_date = fes->next_date()) != -1.0) {
     XBT_DEBUG("%g" " : \n", next_event_date);
 
   while ((next_event_date = fes->next_date()) != -1.0) {
     XBT_DEBUG("%g" " : \n", next_event_date);
-    while (fes->pop_leq(next_event_date, &value, (void **) &resource)) {
-      XBT_DEBUG("\t %s : " "%g" "\n", resource, value);
+    while (fes->pop_leq(next_event_date, &value, &resource)) {
+      XBT_DEBUG("\t %s : " "%g" "\n", resource->getName(), value);
     }
     if (next_event_date > 1000)
       break;
   }
 
   delete fes;
     }
     if (next_event_date > 1000)
       break;
   }
 
   delete fes;
-  free(host_B);
-  free(host_A);
+  delete hostA;
+  delete hostB;
 }
 
 int main(int argc, char **argv)
 }
 
 int main(int argc, char **argv)