28 std::unique_ptr<vmxon_intel_x64>
vmxon,
29 std::unique_ptr<vmcs_intel_x64>
vmcs,
31 std::unique_ptr<vmcs_intel_x64_state> vmm_state,
32 std::unique_ptr<vmcs_intel_x64_state> guest_state) :
34 vcpu(id,
std::move(debug_ring)),
35 m_vmcs_launched(false),
36 m_vmxon(
std::move(vmxon)),
37 m_vmcs(
std::move(vmcs)),
38 m_exit_handler(
std::move(exit_handler)),
39 m_vmm_state(
std::move(vmm_state)),
40 m_guest_state(
std::move(guest_state))
46 auto ___ = gsl::on_failure([&]
53 m_vmxon = std::make_unique<vmxon_intel_x64>();
56 m_vmcs = std::make_unique<vmcs_intel_x64>();
62 m_vmm_state = std::make_unique<vmcs_intel_x64_vmm_state>();
65 m_guest_state = std::make_unique<vmcs_intel_x64_host_vm_state>();
91 m_vmcs_launched =
true;
93 auto ___ = gsl::on_failure([&]
94 { m_vmcs_launched =
false; });
98 auto ___ = gsl::on_failure([&]
104 auto ___ = gsl::on_failure([&]
127 auto ___ = gsl::on_success([&]
128 { m_vmcs_launched =
false; });
std::unique_ptr< vmcs_intel_x64_state > m_vmm_state
int64_t unsigned long void * data
void exit_handler(exit_handler_intel_x64 *exit_handler) noexcept
vcpu_intel_x64(vcpuid::type id, std::unique_ptr< debug_ring > debug_ring=nullptr, std::unique_ptr< vmxon_intel_x64 > vmxon=nullptr, std::unique_ptr< vmcs_intel_x64 > vmcs=nullptr, std::unique_ptr< exit_handler_intel_x64 > exit_handler=nullptr, std::unique_ptr< vmcs_intel_x64_state > vmm_state=nullptr, std::unique_ptr< vmcs_intel_x64_state > guest_state=nullptr)
std::unique_ptr< vmcs_intel_x64_state > m_guest_state
virtual void run(user_data *data=nullptr)
std::unique_ptr< vmxon_intel_x64 > m_vmxon
void run(user_data *data=nullptr) override
virtual void init(user_data *data=nullptr)
virtual bool is_host_vm_vcpu()
std::unique_ptr< state_save_intel_x64 > m_state_save
virtual void hlt(user_data *data=nullptr)
constexpr const auto vmxon
std::unique_ptr< exit_handler_intel_x64 > m_exit_handler
void init(user_data *data=nullptr) override
void fini(user_data *data=nullptr) override
void hlt(user_data *data=nullptr) override
virtual vcpuid::type id() const
virtual bool is_initialized()
std::unique_ptr< vmcs_intel_x64 > m_vmcs
virtual void fini(user_data *data=nullptr)