Skip to content

remove compiler warnings #2

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,7 @@
`hypervisor` is a Rust library that taps into functionality that enables hardware-accelerated execution of
virtual machines on OS X.

It binds to the [Hypervisor](https://developer.apple.com/library/mac/documentation/Hypervisor/Reference/Hypervisor_Reference/index.html#//apple_ref/doc/uid/TP40016756) framework on OS X, and exposes a safe Rust
interface through the `hypervisor` module, and an unsafe foreign function
interface through the `hypervisor::ffi` module.
It binds to the [Hypervisor](https://developer.apple.com/documentation/hypervisor) framework on OS X, and exposes a safe Rust interface through the `hypervisor` module, and an unsafe foreign function interface through the `hypervisor::ffi` module.

[Documentation](https://saurvs.github.io/hypervisor-rs/)

Expand Down
18 changes: 8 additions & 10 deletions src/consts/irq.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,11 @@ THE SOFTWARE.

//! Interrupt Request (IRQ) Codes

use libc::*;

pub const IRQ_INFO_EXT_IRQ : uint32_t = 0 << 8;
pub const IRQ_INFO_NMI : uint32_t = 2 << 8;
pub const IRQ_INFO_HARD_EXC : uint32_t = 3 << 8;
pub const IRQ_INFO_SOFT_IRQ : uint32_t = 4 << 8;
pub const IRQ_INFO_PRIV_SOFT_EXC : uint32_t = 5 << 8;
pub const IRQ_INFO_SOFT_EXC : uint32_t = 6 << 8;
pub const IRQ_INFO_ERROR_VALID : uint32_t = 1 << 11;
pub const IRQ_INFO_VALID : uint32_t = 1 << 31;
pub const IRQ_INFO_EXT_IRQ : u32 = 0 << 8;
pub const IRQ_INFO_NMI : u32 = 2 << 8;
pub const IRQ_INFO_HARD_EXC : u32 = 3 << 8;
pub const IRQ_INFO_SOFT_IRQ : u32 = 4 << 8;
pub const IRQ_INFO_PRIV_SOFT_EXC : u32 = 5 << 8;
pub const IRQ_INFO_SOFT_EXC : u32 = 6 << 8;
pub const IRQ_INFO_ERROR_VALID : u32 = 1 << 11;
pub const IRQ_INFO_VALID : u32 = 1 << 31;
4 changes: 1 addition & 3 deletions src/consts/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,4 @@ pub mod vmx_cap;
pub mod vmx_exit;
pub mod irq;

use libc::*;

pub const VMX_BASIC_TRUE_CTLS: uint64_t = 1 << 55;
pub const VMX_BASIC_TRUE_CTLS: u64= 1 << 55;
304 changes: 151 additions & 153 deletions src/consts/vmcs.rs

Large diffs are not rendered by default.

126 changes: 62 additions & 64 deletions src/consts/vmx_cap.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,72 +22,70 @@ THE SOFTWARE.

//! VMX capability field values

use libc::*;
pub const PIN_BASED_INTR : u64 = 1 << 0;
pub const PIN_BASED_NMI : u64 = 1 << 3;
pub const PIN_BASED_VIRTUAL_NMI : u64 = 1 << 5;
pub const PIN_BASED_PREEMPTION_TIMER : u64 = 1 << 6;
pub const PIN_BASED_POSTED_INTR : u64 = 1 << 7;

pub const PIN_BASED_INTR : uint64_t = 1 << 0;
pub const PIN_BASED_NMI : uint64_t = 1 << 3;
pub const PIN_BASED_VIRTUAL_NMI : uint64_t = 1 << 5;
pub const PIN_BASED_PREEMPTION_TIMER : uint64_t = 1 << 6;
pub const PIN_BASED_POSTED_INTR : uint64_t = 1 << 7;
pub const CPU_BASED_IRQ_WND : u64 = 1 << 2;
pub const CPU_BASED_TSC_OFFSET : u64 = 1 << 3;
pub const CPU_BASED_HLT : u64 = 1 << 7;
pub const CPU_BASED_INVLPG : u64 = 1 << 9;
pub const CPU_BASED_MWAIT : u64 = 1 << 10;
pub const CPU_BASED_RDPMC : u64 = 1 << 11;
pub const CPU_BASED_RDTSC : u64 = 1 << 12;
pub const CPU_BASED_CR3_LOAD : u64 = 1 << 15;
pub const CPU_BASED_CR3_STORE : u64 = 1 << 16;
pub const CPU_BASED_CR8_LOAD : u64 = 1 << 19;
pub const CPU_BASED_CR8_STORE : u64 = 1 << 20;
pub const CPU_BASED_TPR_SHADOW : u64 = 1 << 21;
pub const CPU_BASED_VIRTUAL_NMI_WND : u64 = 1 << 22;
pub const CPU_BASED_MOV_DR : u64 = 1 << 23;
pub const CPU_BASED_UNCOND_IO : u64 = 1 << 24;
pub const CPU_BASED_IO_BITMAPS : u64 = 1 << 25;
pub const CPU_BASED_MTF : u64 = 1 << 27;
pub const CPU_BASED_MSR_BITMAPS : u64 = 1 << 28;
pub const CPU_BASED_MONITOR : u64 = 1 << 29;
pub const CPU_BASED_PAUSE : u64 = 1 << 30;
pub const CPU_BASED_SECONDARY_CTLS : u64 = 1 << 31;

pub const CPU_BASED_IRQ_WND : uint64_t = 1 << 2;
pub const CPU_BASED_TSC_OFFSET : uint64_t = 1 << 3;
pub const CPU_BASED_HLT : uint64_t = 1 << 7;
pub const CPU_BASED_INVLPG : uint64_t = 1 << 9;
pub const CPU_BASED_MWAIT : uint64_t = 1 << 10;
pub const CPU_BASED_RDPMC : uint64_t = 1 << 11;
pub const CPU_BASED_RDTSC : uint64_t = 1 << 12;
pub const CPU_BASED_CR3_LOAD : uint64_t = 1 << 15;
pub const CPU_BASED_CR3_STORE : uint64_t = 1 << 16;
pub const CPU_BASED_CR8_LOAD : uint64_t = 1 << 19;
pub const CPU_BASED_CR8_STORE : uint64_t = 1 << 20;
pub const CPU_BASED_TPR_SHADOW : uint64_t = 1 << 21;
pub const CPU_BASED_VIRTUAL_NMI_WND : uint64_t = 1 << 22;
pub const CPU_BASED_MOV_DR : uint64_t = 1 << 23;
pub const CPU_BASED_UNCOND_IO : uint64_t = 1 << 24;
pub const CPU_BASED_IO_BITMAPS : uint64_t = 1 << 25;
pub const CPU_BASED_MTF : uint64_t = 1 << 27;
pub const CPU_BASED_MSR_BITMAPS : uint64_t = 1 << 28;
pub const CPU_BASED_MONITOR : uint64_t = 1 << 29;
pub const CPU_BASED_PAUSE : uint64_t = 1 << 30;
pub const CPU_BASED_SECONDARY_CTLS : uint64_t = 1 << 31;
pub const CPU_BASED2_VIRTUAL_APIC : u64 = 1 << 0;
pub const CPU_BASED2_EPT : u64 = 1 << 1;
pub const CPU_BASED2_DESC_TABLE : u64 = 1 << 2;
pub const CPU_BASED2_RDTSCP : u64 = 1 << 3;
pub const CPU_BASED2_X2APIC : u64 = 1 << 4;
pub const CPU_BASED2_VPID : u64 = 1 << 5;
pub const CPU_BASED2_WBINVD : u64 = 1 << 6;
pub const CPU_BASED2_UNRESTRICTED : u64 = 1 << 7;
pub const CPU_BASED2_APIC_REG_VIRT : u64 = 1 << 8;
pub const CPU_BASED2_VIRT_INTR_DELIVERY : u64 = 1 << 9;
pub const CPU_BASED2_PAUSE_LOOP : u64 = 1 << 10;
pub const CPU_BASED2_RDRAND : u64 = 1 << 11;
pub const CPU_BASED2_INVPCID : u64 = 1 << 12;
pub const CPU_BASED2_VMFUNC : u64 = 1 << 13;
pub const CPU_BASED2_VMCS_SHADOW : u64 = 1 << 14;
pub const CPU_BASED2_RDSEED : u64 = 1 << 16;
pub const CPU_BASED2_EPT_VE : u64 = 1 << 18;
pub const CPU_BASED2_XSAVES_XRSTORS : u64 = 1 << 20;

pub const CPU_BASED2_VIRTUAL_APIC : uint64_t = 1 << 0;
pub const CPU_BASED2_EPT : uint64_t = 1 << 1;
pub const CPU_BASED2_DESC_TABLE : uint64_t = 1 << 2;
pub const CPU_BASED2_RDTSCP : uint64_t = 1 << 3;
pub const CPU_BASED2_X2APIC : uint64_t = 1 << 4;
pub const CPU_BASED2_VPID : uint64_t = 1 << 5;
pub const CPU_BASED2_WBINVD : uint64_t = 1 << 6;
pub const CPU_BASED2_UNRESTRICTED : uint64_t = 1 << 7;
pub const CPU_BASED2_APIC_REG_VIRT : uint64_t = 1 << 8;
pub const CPU_BASED2_VIRT_INTR_DELIVERY : uint64_t = 1 << 9;
pub const CPU_BASED2_PAUSE_LOOP : uint64_t = 1 << 10;
pub const CPU_BASED2_RDRAND : uint64_t = 1 << 11;
pub const CPU_BASED2_INVPCID : uint64_t = 1 << 12;
pub const CPU_BASED2_VMFUNC : uint64_t = 1 << 13;
pub const CPU_BASED2_VMCS_SHADOW : uint64_t = 1 << 14;
pub const CPU_BASED2_RDSEED : uint64_t = 1 << 16;
pub const CPU_BASED2_EPT_VE : uint64_t = 1 << 18;
pub const CPU_BASED2_XSAVES_XRSTORS : uint64_t = 1 << 20;
pub const VMX_EPT_VPID_SUPPORT_AD : u64 = 1 << 21;
pub const VMX_EPT_VPID_SUPPORT_EXONLY : u64 = 1 << 0;

pub const VMX_EPT_VPID_SUPPORT_AD : uint64_t = 1 << 21;
pub const VMX_EPT_VPID_SUPPORT_EXONLY : uint64_t = 1 << 0;
pub const VMEXIT_SAVE_DBG_CONTROLS : u64 = 1 << 2;
pub const VMEXIT_HOST_IA32E : u64 = 1 << 9;
pub const VMEXIT_LOAD_IA32_PERF_GLOBAL_CTRL : u64 = 1 << 12;
pub const VMEXIT_ACK_INTR : u64 = 1 << 15;
pub const VMEXIT_SAVE_IA32_PAT : u64 = 1 << 18;
pub const VMEXIT_LOAD_IA32_PAT : u64 = 1 << 19;
pub const VMEXIT_SAVE_EFER : u64 = 1 << 20;
pub const VMEXIT_LOAD_EFER : u64 = 1 << 21;
pub const VMEXIT_SAVE_VMX_TIMER : u64 = 1 << 22;

pub const VMEXIT_SAVE_DBG_CONTROLS : uint64_t = 1 << 2;
pub const VMEXIT_HOST_IA32E : uint64_t = 1 << 9;
pub const VMEXIT_LOAD_IA32_PERF_GLOBAL_CTRL : uint64_t = 1 << 12;
pub const VMEXIT_ACK_INTR : uint64_t = 1 << 15;
pub const VMEXIT_SAVE_IA32_PAT : uint64_t = 1 << 18;
pub const VMEXIT_LOAD_IA32_PAT : uint64_t = 1 << 19;
pub const VMEXIT_SAVE_EFER : uint64_t = 1 << 20;
pub const VMEXIT_LOAD_EFER : uint64_t = 1 << 21;
pub const VMEXIT_SAVE_VMX_TIMER : uint64_t = 1 << 22;

pub const VMENTRY_LOAD_DBG_CONTROLS : uint64_t = 1 << 2;
pub const VMENTRY_GUEST_IA32E : uint64_t = 1 << 9;
pub const VMENTRY_SMM : uint64_t = 1 << 10;
pub const VMENTRY_DEACTIVATE_DUAL_MONITOR : uint64_t = 1 << 11;
pub const VMENTRY_LOAD_IA32_PERF_GLOBAL_CTRL : uint64_t = 1 << 13;
pub const VMENTRY_LOAD_IA32_PAT : uint64_t = 1 << 14;
pub const VMENTRY_LOAD_EFER : uint64_t = 1 << 15;
pub const VMENTRY_LOAD_DBG_CONTROLS : u64 = 1 << 2;
pub const VMENTRY_GUEST_IA32E : u64 = 1 << 9;
pub const VMENTRY_SMM : u64 = 1 << 10;
pub const VMENTRY_DEACTIVATE_DUAL_MONITOR : u64 = 1 << 11;
pub const VMENTRY_LOAD_IA32_PERF_GLOBAL_CTRL : u64 = 1 << 13;
pub const VMENTRY_LOAD_IA32_PAT : u64 = 1 << 14;
pub const VMENTRY_LOAD_EFER : u64 = 1 << 15;
122 changes: 60 additions & 62 deletions src/consts/vmx_exit.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,65 +22,63 @@ THE SOFTWARE.

//! VMX exit reasons

use libc::*;

pub const VMX_REASON_EXC_NMI : uint64_t = 0;
pub const VMX_REASON_IRQ : uint64_t = 1;
pub const VMX_REASON_TRIPLE_FAULT : uint64_t = 2;
pub const VMX_REASON_INIT : uint64_t = 3;
pub const VMX_REASON_SIPI : uint64_t = 4;
pub const VMX_REASON_IO_SMI : uint64_t = 5;
pub const VMX_REASON_OTHER_SMI : uint64_t = 6;
pub const VMX_REASON_IRQ_WND : uint64_t = 7;
pub const VMX_REASON_VIRTUAL_NMI_WND : uint64_t = 8;
pub const VMX_REASON_TASK : uint64_t = 9;
pub const VMX_REASON_CPUID : uint64_t = 10;
pub const VMX_REASON_GETSEC : uint64_t = 11;
pub const VMX_REASON_HLT : uint64_t = 12;
pub const VMX_REASON_INVD : uint64_t = 13;
pub const VMX_REASON_INVLPG : uint64_t = 14;
pub const VMX_REASON_RDPMC : uint64_t = 15;
pub const VMX_REASON_RDTSC : uint64_t = 16;
pub const VMX_REASON_RSM : uint64_t = 17;
pub const VMX_REASON_VMCALL : uint64_t = 18;
pub const VMX_REASON_VMCLEAR : uint64_t = 19;
pub const VMX_REASON_VMLAUNCH : uint64_t = 20;
pub const VMX_REASON_VMPTRLD : uint64_t = 21;
pub const VMX_REASON_VMPTRST : uint64_t = 22;
pub const VMX_REASON_VMREAD : uint64_t = 23;
pub const VMX_REASON_VMRESUME : uint64_t = 24;
pub const VMX_REASON_VMWRITE : uint64_t = 25;
pub const VMX_REASON_VMOFF : uint64_t = 26;
pub const VMX_REASON_VMON : uint64_t = 27;
pub const VMX_REASON_MOV_CR : uint64_t = 28;
pub const VMX_REASON_MOV_DR : uint64_t = 29;
pub const VMX_REASON_IO : uint64_t = 30;
pub const VMX_REASON_RDMSR : uint64_t = 31;
pub const VMX_REASON_WRMSR : uint64_t = 32;
pub const VMX_REASON_VMENTRY_GUEST : uint64_t = 33;
pub const VMX_REASON_VMENTRY_MSR : uint64_t = 34;
pub const VMX_REASON_MWAIT : uint64_t = 36;
pub const VMX_REASON_MTF : uint64_t = 37;
pub const VMX_REASON_MONITOR : uint64_t = 39;
pub const VMX_REASON_PAUSE : uint64_t = 40;
pub const VMX_REASON_VMENTRY_MC : uint64_t = 41;
pub const VMX_REASON_TPR_THRESHOLD : uint64_t = 43;
pub const VMX_REASON_APIC_ACCESS : uint64_t = 44;
pub const VMX_REASON_VIRTUALIZED_EOI : uint64_t = 45;
pub const VMX_REASON_GDTR_IDTR : uint64_t = 46;
pub const VMX_REASON_LDTR_TR : uint64_t = 47;
pub const VMX_REASON_EPT_VIOLATION : uint64_t = 48;
pub const VMX_REASON_EPT_MISCONFIG : uint64_t = 49;
pub const VMX_REASON_EPT_INVEPT : uint64_t = 50;
pub const VMX_REASON_RDTSCP : uint64_t = 51;
pub const VMX_REASON_VMX_TIMER_EXPIRED : uint64_t = 52;
pub const VMX_REASON_INVVPID : uint64_t = 53;
pub const VMX_REASON_WBINVD : uint64_t = 54;
pub const VMX_REASON_XSETBV : uint64_t = 55;
pub const VMX_REASON_APIC_WRITE : uint64_t = 56;
pub const VMX_REASON_RDRAND : uint64_t = 57;
pub const VMX_REASON_INVPCID : uint64_t = 58;
pub const VMX_REASON_VMFUNC : uint64_t = 59;
pub const VMX_REASON_RDSEED : uint64_t = 61;
pub const VMX_REASON_XSAVES : uint64_t = 63;
pub const VMX_REASON_XRSTORS : uint64_t = 64;
pub const VMX_REASON_EXC_NMI : u64 = 0;
pub const VMX_REASON_IRQ : u64 = 1;
pub const VMX_REASON_TRIPLE_FAULT : u64 = 2;
pub const VMX_REASON_INIT : u64 = 3;
pub const VMX_REASON_SIPI : u64 = 4;
pub const VMX_REASON_IO_SMI : u64 = 5;
pub const VMX_REASON_OTHER_SMI : u64 = 6;
pub const VMX_REASON_IRQ_WND : u64 = 7;
pub const VMX_REASON_VIRTUAL_NMI_WND : u64 = 8;
pub const VMX_REASON_TASK : u64 = 9;
pub const VMX_REASON_CPUID : u64 = 10;
pub const VMX_REASON_GETSEC : u64 = 11;
pub const VMX_REASON_HLT : u64 = 12;
pub const VMX_REASON_INVD : u64 = 13;
pub const VMX_REASON_INVLPG : u64 = 14;
pub const VMX_REASON_RDPMC : u64 = 15;
pub const VMX_REASON_RDTSC : u64 = 16;
pub const VMX_REASON_RSM : u64 = 17;
pub const VMX_REASON_VMCALL : u64 = 18;
pub const VMX_REASON_VMCLEAR : u64 = 19;
pub const VMX_REASON_VMLAUNCH : u64 = 20;
pub const VMX_REASON_VMPTRLD : u64 = 21;
pub const VMX_REASON_VMPTRST : u64 = 22;
pub const VMX_REASON_VMREAD : u64 = 23;
pub const VMX_REASON_VMRESUME : u64 = 24;
pub const VMX_REASON_VMWRITE : u64 = 25;
pub const VMX_REASON_VMOFF : u64 = 26;
pub const VMX_REASON_VMON : u64 = 27;
pub const VMX_REASON_MOV_CR : u64 = 28;
pub const VMX_REASON_MOV_DR : u64 = 29;
pub const VMX_REASON_IO : u64 = 30;
pub const VMX_REASON_RDMSR : u64 = 31;
pub const VMX_REASON_WRMSR : u64 = 32;
pub const VMX_REASON_VMENTRY_GUEST : u64 = 33;
pub const VMX_REASON_VMENTRY_MSR : u64 = 34;
pub const VMX_REASON_MWAIT : u64 = 36;
pub const VMX_REASON_MTF : u64 = 37;
pub const VMX_REASON_MONITOR : u64 = 39;
pub const VMX_REASON_PAUSE : u64 = 40;
pub const VMX_REASON_VMENTRY_MC : u64 = 41;
pub const VMX_REASON_TPR_THRESHOLD : u64 = 43;
pub const VMX_REASON_APIC_ACCESS : u64 = 44;
pub const VMX_REASON_VIRTUALIZED_EOI : u64 = 45;
pub const VMX_REASON_GDTR_IDTR : u64 = 46;
pub const VMX_REASON_LDTR_TR : u64 = 47;
pub const VMX_REASON_EPT_VIOLATION : u64 = 48;
pub const VMX_REASON_EPT_MISCONFIG : u64 = 49;
pub const VMX_REASON_EPT_INVEPT : u64 = 50;
pub const VMX_REASON_RDTSCP : u64 = 51;
pub const VMX_REASON_VMX_TIMER_EXPIRED : u64 = 52;
pub const VMX_REASON_INVVPID : u64 = 53;
pub const VMX_REASON_WBINVD : u64 = 54;
pub const VMX_REASON_XSETBV : u64 = 55;
pub const VMX_REASON_APIC_WRITE : u64 = 56;
pub const VMX_REASON_RDRAND : u64 = 57;
pub const VMX_REASON_INVPCID : u64 = 58;
pub const VMX_REASON_VMFUNC : u64 = 59;
pub const VMX_REASON_RDSEED : u64 = 61;
pub const VMX_REASON_XSAVES : u64 = 63;
pub const VMX_REASON_XRSTORS : u64 = 64;
Loading