1/**
2 * \file
3 * \brief Interface to shared data structures between the kernel and a VM monitor.
4 */
5
6/*
7 * Copyright (c) 2009, ETH Zurich.
8 * All rights reserved.
9 *
10 * This file is distributed under the terms in the attached LICENSE file.
11 * If you do not find this file, copies can be found by writing to:
12 * ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
13 */
14
15#ifndef KPI_VMKIT_H
16#define KPI_VMKIT_H
17
18struct msr_entry {
19    uint32_t index;
20    uint32_t reserved;
21    uint64_t val;
22} __attribute__ ((packed));
23
24/**
25 * \brief A VMKit guest control and state structure.
26 *
27 * Defines some control and state values shared beween VMKit kernel and a VM
28 * monitor.
29 */
30struct guest_control {
31    /// Space to store all regs not captured in the VMCB
32    struct registers_x86_64 regs;
33    struct registers_x86_64 host_regs;
34    uint64_t guest_cr2;
35    uint64_t host_cr2;
36    uint64_t        num_vm_exits_with_monitor_invocation;
37    uint64_t        num_vm_exits_without_monitor_invocation;
38};
39
40#endif // KPI_VMKIT_H
41