X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/0b02f400ac3369708072d60d38c1b509d31a9957..7b6fecb801d2d513ebbd7bea94c52322e2cc1df2:/src/s4u/s4u_Host.cpp diff --git a/src/s4u/s4u_Host.cpp b/src/s4u/s4u_Host.cpp index 2a78d57a29..73195c55a4 100644 --- a/src/s4u/s4u_Host.cpp +++ b/src/s4u/s4u_Host.cpp @@ -9,7 +9,6 @@ #include "simgrid/s4u/Exec.hpp" #include "simgrid/s4u/VirtualMachine.hpp" #include "src/plugins/vm/VirtualMachineImpl.hpp" -#include "src/simix/smx_private.hpp" #include "src/surf/HostImpl.hpp" #include @@ -76,7 +75,7 @@ Host* Host::by_name_or_null(const std::string& name) Host* Host::current() { - kernel::actor::ActorImpl* self = SIMIX_process_self(); + kernel::actor::ActorImpl* self = kernel::actor::ActorImpl::self(); if (self == nullptr) xbt_die("Cannot call Host::current() from the maestro context"); return self->get_host(); @@ -97,14 +96,15 @@ void Host::turn_on() void Host::turn_off() { if (is_on()) { - kernel::actor::simcall([this] { + kernel::actor::ActorImpl* self = kernel::actor::ActorImpl::self(); + kernel::actor::simcall([this, self] { for (VirtualMachine* const& vm : vm::VirtualMachineImpl::allVms_) if (vm->get_pm() == this) { vm->shutdown(); vm->turn_off(); } this->pimpl_cpu->turn_off(); - this->pimpl_->turn_off(); + this->pimpl_->turn_off(self); on_state_change(*this); }); @@ -154,7 +154,7 @@ void Host::route_to(Host* dest, std::vector& links, double* latency) std::vector linkImpls; this->route_to(dest, linkImpls, latency); for (kernel::resource::LinkImpl* const& l : linkImpls) - links.push_back(&l->piface_); + links.push_back(l->get_iface()); } /** @brief Just like Host::routeTo, but filling an array of link implementations */ @@ -311,7 +311,7 @@ std::unordered_map const& Host::get_mounted_storages() if (mounts_ == nullptr) { mounts_ = new std::unordered_map(); for (auto const& m : this->pimpl_->storage_) { - mounts_->insert({m.first, &m.second->piface_}); + mounts_->insert({m.first, m.second->get_iface()}); } } return *mounts_; @@ -427,8 +427,8 @@ xbt_dict_t sg_host_get_mounted_storage_list(sg_host_t host) xbt_dict_t res = xbt_dict_new_homogeneous(nullptr); for (auto const& elm : host->get_mounted_storages()) { const char* mount_name = elm.first.c_str(); - sg_storage_t storage = elm.second; - xbt_dict_set(res, mount_name, (void*)storage->get_cname(), nullptr); + const simgrid::s4u::Storage* storage = elm.second; + xbt_dict_set(res, mount_name, (void*)storage->get_cname()); } return res; @@ -550,7 +550,7 @@ xbt_dict_t sg_host_get_properties(sg_host_t host) if (props == nullptr) return nullptr; for (auto const& elm : *props) { - xbt_dict_set(as_dict, elm.first.c_str(), xbt_strdup(elm.second.c_str()), nullptr); + xbt_dict_set(as_dict, elm.first.c_str(), xbt_strdup(elm.second.c_str())); } return as_dict; } @@ -647,25 +647,20 @@ void sg_host_dump(sg_host_t host) */ void sg_host_get_actor_list(sg_host_t host, xbt_dynar_t whereto) { - auto actors = host->get_all_actors(); - for (auto& actor : actors) + auto const actors = host->get_all_actors(); + for (auto const& actor : actors) xbt_dynar_push(whereto, &actor); } sg_host_t sg_host_self() { - simgrid::kernel::actor::ActorImpl* self = SIMIX_process_self(); - return (self == nullptr) ? nullptr : self->get_host(); + return SIMIX_is_maestro() ? nullptr : simgrid::kernel::actor::ActorImpl::self()->get_host(); } /* needs to be public and without simcall for exceptions and logging events */ const char* sg_host_self_get_name() { - sg_host_t host = sg_host_self(); - if (host == nullptr || SIMIX_process_self() == simix_global->maestro_process) - return ""; - - return host->get_cname(); + return SIMIX_is_maestro() ? "" : simgrid::kernel::actor::ActorImpl::self()->get_host()->get_cname(); } double sg_host_load(sg_host_t host)