X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d206d98b5c7c80f0614239ec37a21ebf7c69faa6..0e21809119a2053427dfbb553cec0f4b48ba038f:/src/surf/vm_interface.hpp?ds=sidebyside diff --git a/src/surf/vm_interface.hpp b/src/surf/vm_interface.hpp index e15fa81010..efcefc4cc7 100644 --- a/src/surf/vm_interface.hpp +++ b/src/surf/vm_interface.hpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2004-2014. The SimGrid Team. +/* Copyright (c) 2004-2015. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it @@ -38,34 +38,6 @@ extern surf_callback(void, VM*) VMDestructedCallbacks; */ extern surf_callback(void, VM*) VMStateChangedCallbacks; -/********* - * Model * - *********/ -/** @ingroup SURF_vm_interface - * @brief SURF VM model interface class - * @details A model is an object which handle the interactions between its Resources and its Actions - */ -class VMModel : public HostModel { -public: - VMModel() :HostModel(){} - ~VMModel(){}; - - Host *createHost(const char *name){DIE_IMPOSSIBLE;} - - /** - * @brief Create a new VM - * - * @param name The name of the new VM - * @param host_PM The real machine hosting the VM - * - */ - virtual VM *createVM(const char *name, surf_resource_t host_PM)=0; - void adjustWeightOfDummyCpuActions() {}; - - typedef boost::intrusive::list > vm_list_t; - static vm_list_t ws_vms; -}; - /************ * Resource * ************/ @@ -74,8 +46,7 @@ public: * @brief SURF VM interface class * @details A VM represent a virtual machine */ -class VM : public Host, - public boost::intrusive::list_base_hook<> { +class VM : public Host { public: /** * @brief Constructor @@ -119,6 +90,38 @@ public: CpuAction *p_action; Host *p_subWs; // Pointer to the ''host'' OS e_surf_vm_state_t p_currentState; +public: + boost::intrusive::list_member_hook<> vm_hook; +}; + +/********* + * Model * + *********/ +/** @ingroup SURF_vm_interface + * @brief SURF VM model interface class + * @details A model is an object which handle the interactions between its Resources and its Actions + */ +class VMModel : public HostModel { +public: + VMModel() :HostModel(){} + ~VMModel(){}; + + Host *createHost(const char *name){DIE_IMPOSSIBLE;} + + /** + * @brief Create a new VM + * + * @param name The name of the new VM + * @param host_PM The real machine hosting the VM + * + */ + virtual VM *createVM(const char *name, surf_resource_t host_PM)=0; + void adjustWeightOfDummyCpuActions() {}; + + typedef boost::intrusive::member_hook< + VM, boost::intrusive::list_member_hook<>, &VM::vm_hook> VmOptions; + typedef boost::intrusive::list > vm_list_t; + static vm_list_t ws_vms; }; /**********