Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
fix by not using lib at all!
authorFrederic Suter <frederic.suter@cc.in2p3.fr>
Thu, 8 Jun 2017 20:45:07 +0000 (22:45 +0200)
committerFrederic Suter <frederic.suter@cc.in2p3.fr>
Thu, 8 Jun 2017 20:45:07 +0000 (22:45 +0200)
src/surf/HostImpl.cpp
src/surf/StorageImpl.cpp
src/surf/storage_n11.cpp
src/surf/storage_n11.hpp
src/surf/surf_interface.cpp

index 0833a45..72f0f72 100644 (file)
@@ -128,19 +128,9 @@ xbt_dict_t HostImpl::getMountedStorageList()
 
 void HostImpl::getAttachedStorageList(std::vector<const char*>* storages)
 {
-  xbt_lib_cursor_t cursor;
-  char* key;
-  void** data;
-  xbt_lib_foreach(storage_lib, cursor, key, data)
-  {
-    if (xbt_lib_get_level(xbt_lib_get_elm_or_null(storage_lib, key), SURF_STORAGE_LEVEL) != nullptr) {
-      simgrid::surf::StorageImpl* storage = static_cast<simgrid::surf::StorageImpl*>(
-          xbt_lib_get_level(xbt_lib_get_elm_or_null(storage_lib, key), SURF_STORAGE_LEVEL));
-      if (not strcmp(static_cast<const char*>(storage->attach_), piface_->cname())) {
-        storages->push_back(storage->cname());
-      }
-    }
-  }
+  for (auto s : storage_)
+    if (not strcmp(static_cast<const char*>(s.second->attach_), piface_->cname()))
+      storages->push_back(s.second->piface_.name());
 }
 
 Action* HostImpl::open(const char* fullpath)
index 7b8980c..aea1e26 100644 (file)
 #include <boost/algorithm/string/join.hpp>
 #include <boost/algorithm/string/split.hpp>
 #include <fstream>
-#include <xbt/lib.h>
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_storage, surf, "Logging specific to the SURF storage module");
 
-xbt_lib_t storage_lib;
-int SURF_STORAGE_LEVEL                          = -1;
 simgrid::surf::StorageModel* surf_storage_model = nullptr;
 
 namespace simgrid {
index 8228aa1..2cedbb9 100644 (file)
@@ -17,17 +17,10 @@ extern std::map<std::string, storage_type_t> storage_types;
 
 static void check_disk_attachment()
 {
-  xbt_lib_cursor_t cursor;
-  char* key;
-  void** data;
-  xbt_lib_foreach(storage_lib, cursor, key, data) {
-    if (xbt_lib_get_level(xbt_lib_get_elm_or_null(storage_lib, key), SURF_STORAGE_LEVEL) != nullptr) {
-      simgrid::surf::StorageImpl* storage =
-          static_cast<simgrid::surf::StorageImpl*>(xbt_lib_get_or_null(storage_lib, key, SURF_STORAGE_LEVEL));
-      simgrid::kernel::routing::NetPoint* host_elm = sg_netpoint_by_name_or_null(storage->attach_);
-      if (not host_elm)
-        surf_parse_error("Unable to attach storage %s: host %s does not exist.", storage->cname(), storage->attach_);
-    }
+  for (auto s : *simgrid::surf::StorageImpl::storagesMap()) {
+    simgrid::kernel::routing::NetPoint* host_elm = sg_netpoint_by_name_or_null(s.second->attach_);
+    if (not host_elm)
+      surf_parse_error("Unable to attach storage %s: host %s does not exist.", s.second->cname(), s.second->attach_);
   }
 }
 
@@ -35,9 +28,6 @@ void storage_register_callbacks()
 {
   simgrid::s4u::onPlatformCreated.connect(check_disk_attachment);
   instr_routing_define_callbacks();
-
-  SURF_STORAGE_LEVEL =
-      xbt_lib_add_level(storage_lib, [](void* self) { delete static_cast<simgrid::surf::StorageImpl*>(self); });
 }
 
 /*********
@@ -65,7 +55,6 @@ StorageImpl* StorageN11Model::createStorage(const char* id, const char* type_id,
 
   StorageImpl* storage = new StorageN11(this, id, maxminSystem_, Bread, Bwrite, type_id, (char*)content_name,
                                         storage_type->size, (char*)attach);
-  xbt_lib_set(storage_lib, id, SURF_STORAGE_LEVEL, storage);
   storageCreatedCallbacks(storage);
 
   XBT_DEBUG("SURF storage create resource\n\t\tid '%s'\n\t\ttype '%s'\n\t\tBread '%f'\n", id, type_id, Bread);
index 72703a1..e8b8425 100644 (file)
@@ -5,6 +5,7 @@
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
 #include <xbt/base.h>
+#include <xbt/lib.h>
 
 #include "StorageImpl.hpp"
 
index f318471..8ee132a 100644 (file)
@@ -345,12 +345,8 @@ void surf_init(int *argc, char **argv)
   XBT_DEBUG("Create all Libs");
   USER_HOST_LEVEL = simgrid::s4u::Host::extension_create(nullptr);
 
-  storage_lib = xbt_lib_new();
   watched_hosts_lib = xbt_dict_new_homogeneous(nullptr);
 
-  XBT_DEBUG("Add SURF levels");
-  SURF_STORAGE_LEVEL = xbt_lib_add_level(storage_lib,surf_storage_free);
-
   xbt_init(argc, argv);
   if (not all_existing_models)
     all_existing_models = new std::vector<simgrid::surf::Model*>();
@@ -371,7 +367,6 @@ void surf_exit()
   TRACE_end();                  /* Just in case it was not called by the upper layer (or there is no upper layer) */
 
   sg_host_exit();
-  xbt_lib_free(&storage_lib);
   sg_link_exit();
   xbt_dict_free(&watched_hosts_lib);
   for (auto e : storage_types) {