X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/8fda7faea52d55ca15ff084a64029b2a63e2f720..a9c7137c5855dfaf080dc89e5d2a3367019d0a5a:/src/surf/HostImpl.cpp diff --git a/src/surf/HostImpl.cpp b/src/surf/HostImpl.cpp index 52dcdbcba8..50b33f6368 100644 --- a/src/surf/HostImpl.cpp +++ b/src/surf/HostImpl.cpp @@ -3,14 +3,7 @@ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ -#include - -#include "src/simix/smx_private.h" -#include "cpu_cas01.hpp" #include "src/surf/HostImpl.hpp" -#include "simgrid/sg_config.h" - -#include "network_interface.hpp" #include "src/plugins/vm/VirtualMachineImpl.hpp" XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_host, surf, "Logging specific to the SURF host module"); @@ -35,11 +28,11 @@ namespace surf { void HostModel::adjustWeightOfDummyCpuActions() { /* iterate for all virtual machines */ - for (VirtualMachineImpl* ws_vm : VirtualMachineImpl::allVms_) { + for (s4u::VirtualMachine* ws_vm : vm::VirtualMachineImpl::allVms_) { - Cpu* cpu = ws_vm->piface_->pimpl_cpu; + Cpu* cpu = ws_vm->pimpl_cpu; - int is_active = lmm_constraint_used(cpu->getModel()->getMaxminSystem(), cpu->getConstraint()); + int is_active = lmm_constraint_used(cpu->model()->getMaxminSystem(), cpu->constraint()); if (is_active) { /* some tasks exist on this VM */ @@ -47,13 +40,13 @@ void HostModel::adjustWeightOfDummyCpuActions() /* FIXME: we should use lmm_update_variable_weight() ? */ /* FIXME: If we assign 1.05 and 0.05, the system makes apparently wrong values. */ - ws_vm->action_->setPriority(1); + ws_vm->pimpl_vm_->action_->setPriority(1); } else { /* no task exits on this VM */ XBT_DEBUG("set the weight of the dummy CPU action on PM to 0"); - ws_vm->action_->setPriority(0); + ws_vm->pimpl_vm_->action_->setPriority(0); } } } @@ -98,8 +91,10 @@ Action* HostModel::executeParallelTask(int host_nb, simgrid::s4u::Host** host_li /************ * Resource * ************/ -HostImpl::HostImpl(s4u::Host* host, xbt_dynar_t storage) : storage_(storage), piface_(host) +HostImpl::HostImpl(s4u::Host* host) : piface_(host) { + /* The VM wants to reinstall a new HostImpl, but we don't want to leak the previously existing one */ + delete piface_->pimpl_; piface_->pimpl_ = this; } @@ -112,7 +107,7 @@ simgrid::surf::Storage* HostImpl::findStorageOnMountList(const char* mount) s_mount_t mnt; unsigned int cursor; - XBT_DEBUG("Search for storage name '%s' on '%s'", mount, piface_->name().c_str()); + XBT_DEBUG("Search for storage name '%s' on '%s'", mount, piface_->cname()); xbt_dynar_foreach (storage_, cursor, mnt) { XBT_DEBUG("See '%s'", mnt.name); if (!strcmp(mount, mnt.name)) { @@ -121,7 +116,7 @@ simgrid::surf::Storage* HostImpl::findStorageOnMountList(const char* mount) } } if (!st) - xbt_die("Can't find mount '%s' for '%s'", mount, piface_->name().c_str()); + xbt_die("Can't find mount '%s' for '%s'", mount, piface_->cname()); return st; } @@ -133,7 +128,7 @@ xbt_dict_t HostImpl::getMountedStorageList() char* storage_name = nullptr; xbt_dynar_foreach (storage_, i, mnt) { - storage_name = (char*)static_cast(mnt.storage)->getName(); + storage_name = (char*)static_cast(mnt.storage)->cname(); xbt_dict_set(storage_list, mnt.name, storage_name, nullptr); } return storage_list; @@ -150,8 +145,8 @@ xbt_dynar_t HostImpl::getAttachedStorageList() if (xbt_lib_get_level(xbt_lib_get_elm_or_null(storage_lib, key), SURF_STORAGE_LEVEL) != nullptr) { simgrid::surf::Storage* storage = static_cast( xbt_lib_get_level(xbt_lib_get_elm_or_null(storage_lib, key), SURF_STORAGE_LEVEL)); - if (!strcmp((const char*)storage->attach_, piface_->name().c_str())) { - xbt_dynar_push_as(result, void*, (void*)storage->getName()); + if (!strcmp((const char*)storage->attach_, piface_->cname())) { + xbt_dynar_push_as(result, void*, (void*)storage->cname()); } } } @@ -169,7 +164,7 @@ xbt_dynar_t HostImpl::getAttachedStorageList() char* file_mount_name = nullptr; char* mount_name = nullptr; - XBT_DEBUG("Search for storage name for '%s' on '%s'", fullpath, piface_->name().c_str()); + XBT_DEBUG("Search for storage name for '%s' on '%s'", fullpath, piface_->cname()); xbt_dynar_foreach (storage_, cursor, mnt) { XBT_DEBUG("See '%s'", mnt.name); file_mount_name = (char*)xbt_malloc((strlen(mnt.name) + 1)); @@ -192,9 +187,9 @@ xbt_dynar_t HostImpl::getAttachedStorageList() path[strlen(fullpath) - longest_prefix_length] = '\0'; mount_name[longest_prefix_length] = '\0'; } else - xbt_die("Can't find mount point for '%s' on '%s'", fullpath, piface_->name().c_str()); + xbt_die("Can't find mount point for '%s' on '%s'", fullpath, piface_->cname()); - XBT_DEBUG("OPEN %s on disk '%s'", path, st->getName()); + XBT_DEBUG("OPEN %s on disk '%s'", path, st->cname()); Action* action = st->open((const char*)mount_name, (const char*)path); free((char*)path); free((char*)mount_name); @@ -204,21 +199,21 @@ xbt_dynar_t HostImpl::getAttachedStorageList() Action* HostImpl::close(surf_file_t fd) { simgrid::surf::Storage* st = findStorageOnMountList(fd->mount); - XBT_DEBUG("CLOSE %s on disk '%s'", fd->name, st->getName()); + XBT_DEBUG("CLOSE %s on disk '%s'", fd->name, st->cname()); return st->close(fd); } Action* HostImpl::read(surf_file_t fd, sg_size_t size) { simgrid::surf::Storage* st = findStorageOnMountList(fd->mount); - XBT_DEBUG("READ %s on disk '%s'", fd->name, st->getName()); + XBT_DEBUG("READ %s on disk '%s'", fd->name, st->cname()); return st->read(fd, size); } Action* HostImpl::write(surf_file_t fd, sg_size_t size) { simgrid::surf::Storage* st = findStorageOnMountList(fd->mount); - XBT_DEBUG("WRITE %s on disk '%s'", fd->name, st->getName()); + XBT_DEBUG("WRITE %s on disk '%s'", fd->name, st->cname()); return st->write(fd, size); } @@ -232,10 +227,10 @@ xbt_dynar_t HostImpl::getAttachedStorageList() simgrid::surf::Storage* st = findStorageOnMountList(fd->mount); /* Check if the file is on this storage */ if (!xbt_dict_get_or_null(st->content_, fd->name)) { - XBT_WARN("File %s is not on disk %s. Impossible to unlink", fd->name, st->getName()); + XBT_WARN("File %s is not on disk %s. Impossible to unlink", fd->name, st->cname()); return -1; } else { - XBT_DEBUG("UNLINK %s on disk '%s'", fd->name, st->getName()); + XBT_DEBUG("UNLINK %s on disk '%s'", fd->name, st->cname()); st->usedSize_ -= fd->size; // Remove the file from storage @@ -262,7 +257,7 @@ xbt_dynar_t HostImpl::getAttachedStorageList() xbt_dynar_t info = xbt_dynar_new(sizeof(void*), nullptr); xbt_dynar_push_as(info, sg_size_t*, psize); xbt_dynar_push_as(info, void*, fd->mount); - xbt_dynar_push_as(info, void*, (void*)st->getName()); + xbt_dynar_push_as(info, void*, (void*)st->cname()); xbt_dynar_push_as(info, void*, st->typeId_); xbt_dynar_push_as(info, void*, st->contentType_); @@ -296,11 +291,10 @@ xbt_dynar_t HostImpl::getAttachedStorageList() { /* Check if the new full path is on the same mount point */ if (!strncmp((const char*)fd->mount, fullpath, strlen(fd->mount))) { - sg_size_t *psize, *new_psize; - psize = (sg_size_t*)xbt_dict_get_or_null(findStorageOnMountList(fd->mount)->content_, fd->name); - new_psize = xbt_new(sg_size_t, 1); - *new_psize = *psize; + sg_size_t* psize = (sg_size_t*)xbt_dict_get_or_null(findStorageOnMountList(fd->mount)->content_, fd->name); if (psize) { // src file exists + sg_size_t* new_psize = xbt_new(sg_size_t, 1); + *new_psize = *psize; xbt_dict_remove(findStorageOnMountList(fd->mount)->content_, fd->name); char* path = (char*)xbt_malloc((strlen(fullpath) - strlen(fd->mount) + 1)); strncpy(path, fullpath + strlen(fd->mount), strlen(fullpath) - strlen(fd->mount) + 1); @@ -318,16 +312,5 @@ xbt_dynar_t HostImpl::getAttachedStorageList() } } - xbt_dynar_t HostImpl::getVms() - { - xbt_dynar_t dyn = xbt_dynar_new(sizeof(simgrid::surf::VirtualMachineImpl*), nullptr); - - for (VirtualMachineImpl* ws_vm : VirtualMachineImpl::allVms_) { - if (this == ws_vm->getPm()->pimpl_) - xbt_dynar_push(dyn, &ws_vm); - } - - return dyn; - } } }