@@ -28,8 +28,9 @@ use xenctrl_sys::{xc_error_code, xc_interface, xenmem_access_t, xentoollog_logge
28
28
use xenvmevent_sys:: {
29
29
vm_event_back_ring, vm_event_request_t, vm_event_response_t, vm_event_sring, MEM_ACCESS_R ,
30
30
MEM_ACCESS_RW , MEM_ACCESS_RWX , MEM_ACCESS_RX , MEM_ACCESS_W , MEM_ACCESS_WX , MEM_ACCESS_X ,
31
- VM_EVENT_REASON_MEM_ACCESS , VM_EVENT_REASON_MOV_TO_MSR , VM_EVENT_REASON_SOFTWARE_BREAKPOINT ,
32
- VM_EVENT_REASON_WRITE_CTRLREG , VM_EVENT_X86_CR0 , VM_EVENT_X86_CR3 , VM_EVENT_X86_CR4 ,
31
+ VM_EVENT_REASON_MEM_ACCESS , VM_EVENT_REASON_MOV_TO_MSR , VM_EVENT_REASON_SINGLESTEP ,
32
+ VM_EVENT_REASON_SOFTWARE_BREAKPOINT , VM_EVENT_REASON_WRITE_CTRLREG , VM_EVENT_X86_CR0 ,
33
+ VM_EVENT_X86_CR3 , VM_EVENT_X86_CR4 ,
33
34
} ;
34
35
35
36
#[ derive( Copy , Clone , Debug ) ]
@@ -122,6 +123,9 @@ pub enum XenEventType {
122
123
gpa : u64 ,
123
124
access : XenPageAccess ,
124
125
} ,
126
+ Singlestep {
127
+ gpa : u64 ,
128
+ } ,
125
129
}
126
130
127
131
#[ derive( Debug ) ]
@@ -325,6 +329,9 @@ impl XenControl {
325
329
flag. try_into ( ) . unwrap ( )
326
330
} ,
327
331
} ,
332
+ VM_EVENT_REASON_SINGLESTEP => XenEventType :: Singlestep {
333
+ gpa : req. u . singlestep . gfn << PAGE_SHIFT ,
334
+ } ,
328
335
_ => unimplemented ! ( ) ,
329
336
} ;
330
337
}
@@ -362,6 +369,16 @@ impl XenControl {
362
369
last_error ! ( self , ( ) )
363
370
}
364
371
372
+ pub fn monitor_singlestep ( & self , domid : u32 , enable : bool ) -> Result < ( ) , XcError > {
373
+ let xc = self . handle . as_ptr ( ) ;
374
+ ( self . libxenctrl . clear_last_error ) ( xc) ;
375
+ let rc = ( self . libxenctrl . monitor_singlestep ) ( xc, domid, enable) ;
376
+ if rc < 0 {
377
+ println ! ( "last OS error: {:?}" , Error :: last_os_error( ) ) ;
378
+ }
379
+ last_error ! ( self , ( ) )
380
+ }
381
+
365
382
pub fn monitor_mov_to_msr ( & self , domid : u32 , msr : u32 , enable : bool ) -> Result < ( ) , XcError > {
366
383
let xc = self . handle . as_ptr ( ) ;
367
384
( self . libxenctrl . clear_last_error ) ( xc) ;
0 commit comments