X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/f9436b840852218b39dce22d6057b6f223168daa..d5b29830df70e823202e384a7655e4371193ecd7:/src/surf/sg_platf.cpp diff --git a/src/surf/sg_platf.cpp b/src/surf/sg_platf.cpp index 1f0c36b2eb..79883f4f1b 100644 --- a/src/surf/sg_platf.cpp +++ b/src/surf/sg_platf.cpp @@ -4,6 +4,7 @@ * under the terms of the license (GNU LGPL) which comes with this package. */ #include "simgrid/s4u/Engine.hpp" +#include "simgrid/s4u/Storage.hpp" #include "src/kernel/EngineImpl.hpp" #include "src/simix/smx_private.h" @@ -28,7 +29,8 @@ #include XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(surf_parse); -XBT_PRIVATE std::map mount_list; +XBT_PRIVATE std::map mount_list; +XBT_PRIVATE std::vector known_storages; namespace simgrid { namespace surf { @@ -99,8 +101,6 @@ void sg_platf_new_host(sg_platf_host_cbarg_t args) if (args->coord && strcmp(args->coord, "")) new simgrid::kernel::routing::vivaldi::Coords(host->pimpl_netpoint, args->coord); - if (TRACE_is_enabled() && TRACE_needs_platform()) - sg_instr_new_host(*host); } /** @brief Add a "router" to the network element list */ @@ -120,7 +120,6 @@ simgrid::kernel::routing::NetPoint* sg_platf_new_router(const char* name, const if (coords && strcmp(coords, "")) new simgrid::kernel::routing::vivaldi::Coords(netpoint, coords); - sg_instr_new_router(name); return netpoint; } @@ -364,7 +363,7 @@ void sg_platf_new_cabinet(sg_platf_cabinet_cbarg_t cabinet) void sg_platf_new_storage(sg_platf_storage_cbarg_t storage) { - xbt_assert(not xbt_lib_get_or_null(storage_lib, storage->id, ROUTING_STORAGE_LEVEL), + xbt_assert(std::find(known_storages.begin(), known_storages.end(), storage->id) == known_storages.end(), "Refusing to add a second storage named \"%s\"", storage->id); xbt_assert(storage_types.find(storage->type_id) != storage_types.end(), "No storage type '%s'", storage->type_id); @@ -373,7 +372,7 @@ void sg_platf_new_storage(sg_platf_storage_cbarg_t storage) XBT_DEBUG("ROUTING Create a storage name '%s' with type_id '%s' and content '%s'", storage->id, storage->type_id, storage->content); - xbt_lib_set(storage_lib, storage->id, ROUTING_STORAGE_LEVEL, (void *) xbt_strdup(storage->type_id)); + known_storages.push_back(storage->id); // if storage content is not specified use the content of storage_type if any if (not strcmp(storage->content, "") && strcmp(stype->content, "")) { @@ -418,15 +417,14 @@ void sg_platf_new_storage_type(sg_platf_storage_type_cbarg_t storage_type) } void sg_platf_new_mount(sg_platf_mount_cbarg_t mount){ - xbt_assert(xbt_lib_get_or_null(storage_lib, mount->storageId, ROUTING_STORAGE_LEVEL), - "Cannot mount non-existent disk \"%s\"", mount->storageId); + xbt_assert(std::find(known_storages.begin(), known_storages.end(), mount->storageId) != known_storages.end(), + "Cannot mount non-existent disk \"%s\"", mount->storageId); XBT_DEBUG("ROUTING Mount '%s' on '%s'",mount->storageId, mount->name); if (mount_list.empty()) XBT_DEBUG("Create a Mount list for %s", A_surfxml_host_id); - mount_list.insert( - {std::string(mount->name), surf_storage_resource_priv(surf_storage_resource_by_name(mount->storageId))}); + mount_list.insert({std::string(mount->name), simgrid::surf::StorageImpl::byName(mount->storageId)}); } void sg_platf_new_route(sg_platf_route_cbarg_t route) @@ -649,7 +647,7 @@ simgrid::s4u::NetZone* sg_platf_new_AS_begin(sg_platf_AS_cbarg_t AS) if (current_routing == nullptr) { /* it is the first one */ xbt_assert(simgrid::s4u::Engine::instance()->pimpl->netRoot_ == nullptr, - "All defined components must belong to a AS"); + "All defined components must belong to a networking zone."); simgrid::s4u::Engine::instance()->pimpl->netRoot_ = new_as; } else { @@ -663,8 +661,7 @@ simgrid::s4u::NetZone* sg_platf_new_AS_begin(sg_platf_AS_cbarg_t AS) /* set the new current component of the tree */ current_routing = new_as; - if (TRACE_is_enabled()) - sg_instr_AS_begin(AS); + simgrid::s4u::NetZone::onCreation(*new_as); // notify the signal return new_as; } @@ -679,10 +676,8 @@ void sg_platf_new_AS_seal() { xbt_assert(current_routing, "Cannot seal the current AS: none under construction"); current_routing->seal(); + simgrid::s4u::NetZone::onSeal(*current_routing); current_routing = static_cast(current_routing->father()); - - if (TRACE_is_enabled()) - sg_instr_AS_end(); } /** @brief Add a link connecting an host to the rest of its AS (which must be cluster or vivaldi) */