summary refs log tree commit diff
path: root/crosvm_plugin/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crosvm_plugin/src/lib.rs')
-rw-r--r--crosvm_plugin/src/lib.rs26
1 files changed, 25 insertions, 1 deletions
diff --git a/crosvm_plugin/src/lib.rs b/crosvm_plugin/src/lib.rs
index 1fb02a1..1482853 100644
--- a/crosvm_plugin/src/lib.rs
+++ b/crosvm_plugin/src/lib.rs
@@ -43,7 +43,7 @@ use sys_util::Scm;
 
 use kvm::dirty_log_bitmap_size;
 
-use kvm_sys::{kvm_regs, kvm_sregs, kvm_fpu};
+use kvm_sys::{kvm_regs, kvm_sregs, kvm_fpu, kvm_debugregs};
 
 use plugin_proto::*;
 
@@ -911,3 +911,27 @@ pub unsafe extern "C" fn crosvm_vcpu_set_fpu(this: *mut crosvm_vcpu, fpu: *const
         Err(e) => e,
     }
 }
+
+#[no_mangle]
+pub unsafe extern "C" fn crosvm_vcpu_get_debugregs(this: *mut crosvm_vcpu,
+                                                   dregs: *mut kvm_debugregs)
+                                                   -> c_int {
+    let this = &mut *this;
+    let dregs = from_raw_parts_mut(dregs as *mut u8, size_of::<kvm_debugregs>());
+    match this.get_state(VcpuRequest_StateSet::DEBUGREGS, dregs) {
+        Ok(_) => 0,
+        Err(e) => e,
+    }
+}
+
+#[no_mangle]
+pub unsafe extern "C" fn crosvm_vcpu_set_debugregs(this: *mut crosvm_vcpu,
+                                                   dregs: *const kvm_debugregs)
+                                                   -> c_int {
+    let this = &mut *this;
+    let dregs = from_raw_parts(dregs as *mut u8, size_of::<kvm_debugregs>());
+    match this.set_state(VcpuRequest_StateSet::DEBUGREGS, dregs) {
+        Ok(_) => 0,
+        Err(e) => e,
+    }
+}