X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ea74f5d95928a521a588737e81f1de94eef25d19..3fb28e990d3e18eef76fa5d21a134f0bd4e2fbaa:/src/kernel/resource/VirtualMachineImpl.hpp diff --git a/src/kernel/resource/VirtualMachineImpl.hpp b/src/kernel/resource/VirtualMachineImpl.hpp index 9a377699a5..8d51c7df04 100644 --- a/src/kernel/resource/VirtualMachineImpl.hpp +++ b/src/kernel/resource/VirtualMachineImpl.hpp @@ -1,11 +1,11 @@ -/* Copyright (c) 2004-2022. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2004-2023. The SimGrid Team. All rights reserved. */ /* 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/surf/HostImpl.hpp" +#include "src/kernel/resource/HostImpl.hpp" #ifndef VM_INTERFACE_HPP_ #define VM_INTERFACE_HPP_ @@ -14,8 +14,7 @@ namespace simgrid { extern template class XBT_PUBLIC xbt::Extendable; -namespace kernel { -namespace resource { +namespace kernel::resource { /************ * Resource * @@ -31,8 +30,11 @@ public: explicit VirtualMachineImpl(const std::string& name, s4u::VirtualMachine* piface, s4u::Host* host, int core_amount, size_t ramsize); + explicit VirtualMachineImpl(const std::string& name, simgrid::s4u::Host* host_PM, int core_amount, size_t ramsize); + void set_piface(s4u::VirtualMachine* piface); - void suspend(actor::ActorImpl* issuer); + void start(); + void suspend(const actor::ActorImpl* issuer); void resume(); void shutdown(kernel::actor::ActorImpl* issuer); void vm_destroy(); @@ -42,8 +44,8 @@ public: /** @brief Get the physical host on which the given VM is running */ s4u::Host* get_physical_host() const { return physical_host_; } - sg_size_t get_ramsize() const { return ramsize_; } - void set_ramsize(sg_size_t ramsize) { ramsize_ = ramsize; } + size_t get_ramsize() const { return ramsize_; } + void set_ramsize(size_t ramsize) { ramsize_ = ramsize; } s4u::VirtualMachine::State get_state() const { return vm_state_; } void set_state(s4u::VirtualMachine::State state) { vm_state_ = state; } @@ -61,12 +63,13 @@ public: void add_active_exec() { active_execs_++; } void remove_active_exec() { active_execs_--; } - void start_migration() { is_migrating_ = true; } - void end_migration() { is_migrating_ = false; } + void start_migration(); + void end_migration(); bool is_migrating() const { return is_migrating_; } + void seal() override; private: - s4u::VirtualMachine* piface_; + s4u::VirtualMachine* piface_ = nullptr; Action* action_ = nullptr; unsigned int active_execs_ = 0; s4u::Host* physical_host_; @@ -80,8 +83,8 @@ private: /********* * Model * *********/ -/** @ingroup SURF_vm_interface - * @brief SURF VM model interface class +/** @ingroup Model_vm_interface + * @brief VM model interface class * @details A model is an object which handle the interactions between its Resources and its Actions */ class XBT_PRIVATE VMModel : public HostModel { @@ -90,14 +93,15 @@ public: double next_occurring_event(double now) override; void update_actions_state(double /*now*/, double /*delta*/) override{}; + Action* execute_thread(const s4u::Host* host, double flops_amount, int thread_count) override; Action* execute_parallel(const std::vector& host_list, const double* flops_amount, const double* bytes_amount, double rate) override { return nullptr; }; + Action* io_stream(s4u::Host* src_host, DiskImpl* src_disk, s4u::Host* dst_host, DiskImpl* dst_disk, double size) override { return nullptr; } }; -} // namespace resource -} // namespace kernel +} // namespace kernel::resource } // namespace simgrid #endif /* VM_INTERFACE_HPP_ */