An open API service indexing awesome lists of open source software.

https://github.com/saurvs/hypervisor-rs

Rust API to the OS X Hypervisor framework for hardware-accelerated virtualization
https://github.com/saurvs/hypervisor-rs

virtualization

Last synced: 3 months ago
JSON representation

Rust API to the OS X Hypervisor framework for hardware-accelerated virtualization

Awesome Lists containing this project

README

          

# hypervisor-rs [![](http://meritbadge.herokuapp.com/hypervisor)](https://crates.io/crates/hypervisor) [![](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/saurvs/hypervisor-rs/blob/master/LICENSE.md)

`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.

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

## Prerequisites

To use this library, you need

* OS X Yosemite (10.10), or newer

* an Intel processor with the VT-x feature set that includes Extended Page
Tables (EPT) and the Unrestricted Mode. To verify this, run and expect the
following in your Terminal:
```shell
$ sysctl kern.hv_support
kern.hv_support: 1
```

## Status
- [x] Accessing x86 registers
- [x] Accessing model-specific registers (MSRs)
- [x] Mapping guest physical memory segments into guest physical address space
- [x] Virtual CPUs
- [x] Executing and interrupting
- [x] Force flushing cached state
- [x] Invalidating translation lookaside buffer (TLB)
- [x] Accessing floating point (FP) and SIMD state
- [x] Obtaining cumulative execution time
- [x] Synchronizing guest timestamp-counters (TSC)
- [x] Accessing fields of Virtual Machine Control Structures (VMCS)