diff options
Diffstat (limited to 'crosvm_plugin/src/lib.rs')
-rw-r--r-- | crosvm_plugin/src/lib.rs | 26 |
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, + } +} |