diff options
author | Zach Reizner <zachr@google.com> | 2018-01-02 13:43:40 -0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-01-03 14:23:23 -0800 |
commit | d60bb1616c18c8fa0250204f460c4c632275cf48 (patch) | |
tree | bf84576ee6fe4fa5bb2fb98b984ee850e6ddea7c /kvm | |
parent | ce4611cde2d51c49356a9599b3c647e2ce3ee488 (diff) | |
download | crosvm-d60bb1616c18c8fa0250204f460c4c632275cf48.tar crosvm-d60bb1616c18c8fa0250204f460c4c632275cf48.tar.gz crosvm-d60bb1616c18c8fa0250204f460c4c632275cf48.tar.bz2 crosvm-d60bb1616c18c8fa0250204f460c4c632275cf48.tar.lz crosvm-d60bb1616c18c8fa0250204f460c4c632275cf48.tar.xz crosvm-d60bb1616c18c8fa0250204f460c4c632275cf48.tar.zst crosvm-d60bb1616c18c8fa0250204f460c4c632275cf48.zip |
kvm: add KVM_GET_FPU ioctl
BUG=None TEST=./build_test Change-Id: I38ee166d9c7a0340d58fb3fd7f51895ca158f8b3 Reviewed-on: https://chromium-review.googlesource.com/848016 Commit-Ready: Zach Reizner <zachr@chromium.org> Tested-by: Zach Reizner <zachr@chromium.org> Reviewed-by: Stephen Barber <smbarber@chromium.org>
Diffstat (limited to 'kvm')
-rw-r--r-- | kvm/src/lib.rs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/kvm/src/lib.rs b/kvm/src/lib.rs index 18699d7..bd7fdf5 100644 --- a/kvm/src/lib.rs +++ b/kvm/src/lib.rs @@ -581,6 +581,19 @@ impl Vcpu { Ok(()) } + /// Gets the VCPU FPU registers. + #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] + pub fn get_fpu(&self) -> Result<kvm_fpu> { + // Safe because we know that our file is a VCPU fd, we know the kernel will only write the + // correct amount of memory to our pointer, and we verify the return result. + let mut regs = unsafe { std::mem::zeroed() }; + let ret = unsafe { ioctl_with_mut_ref(self, KVM_GET_FPU(), &mut regs) }; + if ret != 0 { + return errno_result(); + } + Ok(regs) + } + /// X86 specific call to setup the FPU /// /// See the documentation for KVM_SET_FPU. |