Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
proper check for the -std=gnu++11 standard, and take in on clang too
[simgrid.git] / src / surf / vm_interface.cpp
1 /* Copyright (c) 2013-2015. The SimGrid Team. All rights reserved.          */
2
3 /* This program is free software; you can redistribute it and/or modify it
4  * under the terms of the license (GNU LGPL) which comes with this package. */
5
6 #include "cpu_cas01.hpp"
7 #include "vm_interface.hpp"
8
9 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_vm, surf,
10                                 "Logging specific to the SURF VM module");
11
12 VMModel *surf_vm_model = NULL;
13
14 /*************
15  * Callbacks *
16  *************/
17
18 surf_callback(void, VM*) VMCreatedCallbacks;
19 surf_callback(void, VM*) VMDestructedCallbacks;
20 surf_callback(void, VM*) VMStateChangedCallbacks;
21
22 /*********
23  * Model *
24  *********/
25
26 VMModel::vm_list_t VMModel::ws_vms;
27
28 /************
29  * Resource *
30  ************/
31
32 VM::VM(Model *model, const char *name, xbt_dict_t props,
33                         RoutingEdge *netElm, Cpu *cpu)
34 : Host(model, name, props, NULL, netElm, cpu)
35 {
36   VMModel::ws_vms.push_back(*this);
37   surf_callback_emit(VMCreatedCallbacks, this);
38 }
39
40 /*
41  * A physical host does not disappear in the current SimGrid code, but a VM may
42  * disappear during a simulation.
43  */
44 VM::~VM()
45 {
46   surf_callback_emit(VMDestructedCallbacks, this);
47   VMModel::ws_vms.erase(VMModel::vm_list_t::s_iterator_to(*this));
48 }
49
50 void VM::setState(e_surf_resource_state_t state){
51   Resource::setState(state);
52   surf_callback_emit(VMStateChangedCallbacks, this);
53 }
54
55 /*
56  * A surf level object will be useless in the upper layer. Returning the
57  * dict_elm of the host.
58  **/
59 surf_resource_t VM::getPm()
60 {
61   return xbt_lib_get_elm_or_null(host_lib, p_subWs->getName());
62 }
63
64 /**********
65  * Action *
66  **********/
67
68 //FIME:: handle action cancel
69