@@ -16,10 +16,8 @@ limitations under the License.
1616
1717use std:: convert:: TryFrom ;
1818use std:: fmt:: Debug ;
19- use std:: sync:: Arc ;
20- #[ cfg( gdb) ]
21- use std:: sync:: Mutex ;
2219use std:: sync:: atomic:: { AtomicBool , AtomicU64 , Ordering } ;
20+ use std:: sync:: { Arc , Mutex } ;
2321
2422use kvm_bindings:: { kvm_fpu, kvm_regs, kvm_userspace_memory_region} ;
2523use kvm_ioctls:: Cap :: UserMemory ;
@@ -34,7 +32,7 @@ use super::fpu::{FP_CONTROL_WORD_DEFAULT, FP_TAG_WORD_DEFAULT, MXCSR_DEFAULT};
3432use super :: gdb:: { DebugCommChannel , DebugMsg , DebugResponse , GuestDebug , KvmDebug , VcpuStopReason } ;
3533#[ cfg( gdb) ]
3634use super :: handlers:: DbgMemAccessHandlerWrapper ;
37- use super :: handlers:: { MemAccessHandlerWrapper , OutBHandlerWrapper } ;
35+ use super :: handlers:: { MemAccessHandlerWrapper , OutBHandler , OutBHandlerCaller } ;
3836#[ cfg( feature = "init-paging" ) ]
3937use super :: {
4038 CR0_AM , CR0_ET , CR0_MP , CR0_NE , CR0_PE , CR0_PG , CR0_WP , CR4_OSFXSR , CR4_OSXMMEXCPT , CR4_PAE ,
@@ -448,7 +446,7 @@ impl Hypervisor for KVMDriver {
448446 peb_addr : RawPtr ,
449447 seed : u64 ,
450448 page_size : u32 ,
451- outb_hdl : OutBHandlerWrapper ,
449+ outb_hdl : Arc < Mutex < OutBHandler > > ,
452450 mem_access_hdl : MemAccessHandlerWrapper ,
453451 max_guest_log_level : Option < LevelFilter > ,
454452 #[ cfg( gdb) ] dbg_mem_access_fn : DbgMemAccessHandlerWrapper ,
@@ -528,7 +526,7 @@ impl Hypervisor for KVMDriver {
528526 fn dispatch_call_from_host (
529527 & mut self ,
530528 dispatch_func_addr : RawPtr ,
531- outb_handle_fn : OutBHandlerWrapper ,
529+ outb_handle_fn : Arc < Mutex < OutBHandler > > ,
532530 mem_access_fn : MemAccessHandlerWrapper ,
533531 #[ cfg( gdb) ] dbg_mem_access_fn : DbgMemAccessHandlerWrapper ,
534532 ) -> Result < ( ) > {
@@ -568,7 +566,7 @@ impl Hypervisor for KVMDriver {
568566 data : Vec < u8 > ,
569567 _rip : u64 ,
570568 _instruction_length : u64 ,
571- outb_handle_fn : OutBHandlerWrapper ,
569+ outb_handle_fn : Arc < Mutex < OutBHandler > > ,
572570 ) -> Result < ( ) > {
573571 // KVM does not need RIP or instruction length, as it automatically sets the RIP
574572
0 commit comments