X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/0ed272aba22041443953a820a97523260375ebc4..5410c0dedd6e07e55c0a74a0664d1f8a73d69c1e:/src/surf/vm_hl13.cpp diff --git a/src/surf/vm_hl13.cpp b/src/surf/vm_hl13.cpp index fc317ee75d..f0c0ce8baa 100644 --- a/src/surf/vm_hl13.cpp +++ b/src/surf/vm_hl13.cpp @@ -4,6 +4,10 @@ /* 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 + #include "cpu_cas01.hpp" #include "vm_hl13.hpp" @@ -11,13 +15,15 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(surf_vm); void surf_vm_model_init_HL13(void){ if (surf_cpu_model_vm) { - surf_vm_model = new VMHL13Model(); - Model *model = surf_vm_model; - + surf_vm_model = new simgrid::surf::VMHL13Model(); + simgrid::surf::Model *model = surf_vm_model; xbt_dynar_push(all_existing_models, &model); } } +namespace simgrid { +namespace surf { + /********* * Model * *********/ @@ -29,7 +35,7 @@ void VMHL13Model::updateActionsState(double /*now*/, double /*delta*/) {} /* ind means ''indirect'' that this is a reference on the whole dict_elm * structure (i.e not on the surf_resource_private infos) */ -VirtualMachine *VMHL13Model::createVM(const char *name, surf_resource_t host_PM) +VirtualMachine *VMHL13Model::createVM(const char *name, sg_host_t host_PM) { VirtualMachine* vm = new VMHL13(this, name, NULL, host_PM); surf_callback_emit(VMCreatedCallbacks, vm); @@ -110,7 +116,7 @@ double VMHL13Model::shareResources(double now) typeid(surf_network_model).name(), min_by_net, typeid(surf_storage_model).name(), min_by_sto); - double ret = max(max(min_by_cpu, min_by_net), min_by_sto); + double ret = std::max(std::max(min_by_cpu, min_by_net), min_by_sto); if (min_by_cpu >= 0.0 && min_by_cpu < ret) ret = min_by_cpu; if (min_by_net >= 0.0 && min_by_net < ret) @@ -159,7 +165,7 @@ Action *VMHL13Model::executeParallelTask(int host_nb, ************/ VMHL13::VMHL13(VMModel *model, const char* name, xbt_dict_t props, - surf_resource_t host_PM) + sg_host_t host_PM) : VirtualMachine(model, name, props, NULL, NULL) { Host *sub_ws = surf_host_resource_priv(host_PM); @@ -173,9 +179,9 @@ VMHL13::VMHL13(VMModel *model, const char* name, xbt_dict_t props, * from the VM name, we have to make sure that the system does not call the * free callback for the network resource object. The network resource object * is still used by the physical machine. */ - sg_host_t sg_sub_ws = sg_host_by_name_or_create(sub_ws->getName()); - p_netElm = new RoutingEdgeWrapper(sg_host_edge(sg_sub_ws)); - sg_host_edge_set(sg_host_by_name_or_create(name), p_netElm); + p_netElm = new RoutingEdgeWrapper(sg_host_edge(host_PM)); + sg_host_t host = sg_host_by_name_or_create(name); + sg_host_edge_set(host, p_netElm); p_subWs = sub_ws; p_currentState = SURF_VM_STATE_CREATED; @@ -185,7 +191,7 @@ VMHL13::VMHL13(VMModel *model, const char* name, xbt_dict_t props, CpuCas01 *sub_cpu = static_cast(sg_host_surfcpu(host_PM)); p_cpu = surf_cpu_model_vm->createCpu(name, // name - sub_cpu->getPowerPeakList(), // host->power_peak, + sub_cpu->getSpeedPeakList(), // host->power_peak, sub_cpu->getPState(), 1, // host->power_scale, NULL, // host->power_trace, @@ -193,6 +199,7 @@ VMHL13::VMHL13(VMModel *model, const char* name, xbt_dict_t props, SURF_RESOURCE_ON, // host->initial_state, NULL, // host->state_trace, NULL); // host->properties, + p_cpu->plug(host); /* We create cpu_action corresponding to a VM process on the host operating system. */ /* FIXME: TODO: we have to periodically input GUESTOS_NOISE to the system? how ? */ @@ -265,7 +272,7 @@ void VMHL13::restore() /* * Update the physical host of the given VM */ -void VMHL13::migrate(surf_resource_t ind_dst_pm) +void VMHL13::migrate(sg_host_t ind_dst_pm) { /* ind_dst_pm equals to smx_host_t */ Host *ws_dst = static_cast(surf_host_resource_priv(ind_dst_pm)); @@ -331,9 +338,9 @@ void VMHL13::setAffinity(Cpu *cpu, unsigned long mask){ * A surf level object will be useless in the upper layer. Returning the * dict_elm of the host. **/ -surf_resource_t VMHL13::getPm() +sg_host_t VMHL13::getPm() { - return xbt_lib_get_elm_or_null(host_lib, p_subWs->getName()); + return p_subWs->getHost(); } /* Adding a task to a VM updates the VCPU task on its physical machine. */ @@ -354,3 +361,6 @@ Action *VMHL13::execute(double size) Action *VMHL13::sleep(double duration) { return p_cpu->sleep(duration); } + +} +}