This allows to incorporate the onHostCreation to that function instead
of having each host creator specifying that they just created an host
This was mandatory because the plugin energy needs the properties to
be setup when the signal is called.
simgrid::s4u::Engine::instance()->netcardUnregister(netcard_);
}
simgrid::s4u::Engine::instance()->netcardUnregister(netcard_);
}
-simgrid::s4u::Host* NetZoneImpl::createHost(const char* name, std::vector<double>* speedPerPstate, int coreAmount)
+simgrid::s4u::Host* NetZoneImpl::createHost(const char* name, std::vector<double>* speedPerPstate, int coreAmount,
+ std::unordered_map<std::string, std::string>* props)
{
simgrid::s4u::Host* res = new simgrid::s4u::Host(name);
{
simgrid::s4u::Host* res = new simgrid::s4u::Host(name);
surf_cpu_model_pm->createCpu(res, speedPerPstate, coreAmount);
surf_cpu_model_pm->createCpu(res, speedPerPstate, coreAmount);
+ if (props != nullptr)
+ for (auto kv : *props)
+ res->setProperty(kv.first.c_str(), kv.second.c_str());
+
+ simgrid::s4u::Host::onCreation(*res);
+
public:
/** @brief Make an host within that NetZone */
public:
/** @brief Make an host within that NetZone */
- simgrid::s4u::Host* createHost(const char* name, std::vector<double>* speedPerPstate, int coreAmount);
+ simgrid::s4u::Host* createHost(const char* name, std::vector<double>* speedPerPstate, int coreAmount,
+ std::unordered_map<std::string, std::string>* props);
/** @brief Creates a new route in this NetZone */
void addBypassRoute(sg_platf_route_cbarg_t e_route) override;
/** @brief Creates a new route in this NetZone */
void addBypassRoute(sg_platf_route_cbarg_t e_route) override;
{
xbt_assert(Host::by_name_or_null(name) == nullptr, "Refusing to create a second host named '%s'.", name);
host_list[name_] = this;
{
xbt_assert(Host::by_name_or_null(name) == nullptr, "Refusing to create a second host named '%s'.", name);
host_list[name_] = this;
+ new simgrid::surf::HostImpl(this, nullptr);
/** @brief Add an host to the current AS */
void sg_platf_new_host(sg_platf_host_cbarg_t args)
{
/** @brief Add an host to the current AS */
void sg_platf_new_host(sg_platf_host_cbarg_t args)
{
- simgrid::s4u::Host* host = routing_get_current()->createHost(args->id, &args->speed_per_pstate, args->core_amount);
-
- new simgrid::surf::HostImpl(host, mount_list);
- xbt_lib_set(storage_lib, args->id, ROUTING_STORAGE_HOST_LEVEL, static_cast<void*>(mount_list));
- mount_list = nullptr;
-
+ std::unordered_map<std::string, std::string> props;
if (args->properties) {
xbt_dict_cursor_t cursor=nullptr;
char *key,*data;
xbt_dict_foreach (args->properties, cursor, key, data)
if (args->properties) {
xbt_dict_cursor_t cursor=nullptr;
char *key,*data;
xbt_dict_foreach (args->properties, cursor, key, data)
- host->setProperty(key, data);
xbt_dict_free(&args->properties);
}
xbt_dict_free(&args->properties);
}
+ simgrid::s4u::Host* host =
+ routing_get_current()->createHost(args->id, &args->speed_per_pstate, args->core_amount, &props);
+
+ host->pimpl_->storage_ = mount_list;
+ xbt_lib_set(storage_lib, args->id, ROUTING_STORAGE_HOST_LEVEL, static_cast<void*>(mount_list));
+ mount_list = nullptr;
+
/* Change from the defaults */
if (args->state_trace)
host->pimpl_cpu->setStateTrace(args->state_trace);
/* Change from the defaults */
if (args->state_trace)
host->pimpl_cpu->setStateTrace(args->state_trace);
if (args->coord && strcmp(args->coord, ""))
new simgrid::kernel::routing::vivaldi::Coords(host->pimpl_netcard, args->coord);
if (args->coord && strcmp(args->coord, ""))
new simgrid::kernel::routing::vivaldi::Coords(host->pimpl_netcard, args->coord);
- simgrid::s4u::Host::onCreation(*host);
-
if (TRACE_is_enabled() && TRACE_needs_platform())
sg_instr_new_host(*host);
}
if (TRACE_is_enabled() && TRACE_needs_platform())
sg_instr_new_host(*host);
}
std::vector<double> speedPerPstate;
speedPerPstate.push_back(peer->speed);
std::vector<double> speedPerPstate;
speedPerPstate.push_back(peer->speed);
- simgrid::s4u::Host* host = as->createHost(peer->id, &speedPerPstate, 1);
+ simgrid::s4u::Host* host = as->createHost(peer->id, &speedPerPstate, 1, nullptr);
as->setPeerLink(host->pimpl_netcard, peer->bw_in, peer->bw_out, peer->coord);
as->setPeerLink(host->pimpl_netcard, peer->bw_in, peer->bw_out, peer->coord);
- simgrid::s4u::Host::onCreation(*host);
/* Change from the defaults */
if (peer->state_trace)
/* Change from the defaults */
if (peer->state_trace)