@@ -852,14 +852,21 @@ impl VcpuFd {
852
852
///
853
853
/// ```rust
854
854
/// # extern crate kvm_ioctls;
855
- /// # use kvm_ioctls::Kvm;
855
+ /// # use kvm_ioctls::{ Kvm, Cap} ;
856
856
/// let kvm = Kvm::new().unwrap();
857
- /// let vm = kvm.create_vm().unwrap();
858
- /// let vcpu = vm.create_vcpu(0).unwrap();
859
- /// let vcpu_events = vcpu.get_vcpu_events().unwrap();
857
+ /// if kvm.check_extension(Cap::VcpuEvents) {
858
+ /// let vm = kvm.create_vm().unwrap();
859
+ /// let vcpu = vm.create_vcpu(0).unwrap();
860
+ /// let vcpu_events = vcpu.get_vcpu_events().unwrap();
861
+ /// }
860
862
/// ```
861
863
///
862
- #[ cfg( any( target_arch = "x86" , target_arch = "x86_64" ) ) ]
864
+ #[ cfg( any(
865
+ target_arch = "x86" ,
866
+ target_arch = "x86_64" ,
867
+ target_arch = "arm" ,
868
+ target_arch = "aarch64"
869
+ ) ) ]
863
870
pub fn get_vcpu_events ( & self ) -> Result < kvm_vcpu_events > {
864
871
let mut vcpu_events = Default :: default ( ) ;
865
872
let ret = unsafe {
@@ -885,16 +892,24 @@ impl VcpuFd {
885
892
///
886
893
/// ```rust
887
894
/// # extern crate kvm_ioctls;
888
- /// # use kvm_ioctls::Kvm;
895
+ /// # use kvm_ioctls::{ Kvm, Cap} ;
889
896
/// let kvm = Kvm::new().unwrap();
890
- /// let vm = kvm.create_vm().unwrap();
891
- /// let vcpu = vm.create_vcpu(0).unwrap();
892
- /// let vcpu_events = Default::default();
893
- /// // Your `vcpu_events` manipulation here.
894
- /// vcpu.set_vcpu_events(&vcpu_events).unwrap();
897
+ /// if kvm.check_extension(Cap::VcpuEvents) {
898
+ /// let vm = kvm.create_vm().unwrap();
899
+ /// let vcpu = vm.create_vcpu(0).unwrap();
900
+ /// let vcpu_events = Default::default();
901
+ /// // Your `vcpu_events` manipulation here.
902
+ /// vcpu.set_vcpu_events(&vcpu_events).unwrap();
903
+ /// }
895
904
/// ```
896
905
///
897
- #[ cfg( any( target_arch = "x86" , target_arch = "x86_64" ) ) ]
906
+ #[ cfg( any(
907
+ target_arch = "x86" ,
908
+ target_arch = "x86_64" ,
909
+ target_arch = "arm" ,
910
+ target_arch = "aarch64"
911
+ ) ) ]
912
+
898
913
pub fn set_vcpu_events ( & self , vcpu_events : & kvm_vcpu_events ) -> Result < ( ) > {
899
914
let ret = unsafe {
900
915
// Here we trust the kernel not to read past the end of the kvm_vcpu_events struct.
@@ -1180,7 +1195,12 @@ mod tests {
1180
1195
#[ cfg( target_arch = "x86_64" ) ]
1181
1196
use super :: * ;
1182
1197
use ioctls:: system:: Kvm ;
1183
- #[ cfg( target_arch = "x86_64" ) ]
1198
+ #[ cfg( any(
1199
+ target_arch = "x86" ,
1200
+ target_arch = "x86_64" ,
1201
+ target_arch = "arm" ,
1202
+ target_arch = "aarch64"
1203
+ ) ) ]
1184
1204
use Cap ;
1185
1205
1186
1206
// Helper function for memory mapping `size` bytes of anonymous memory.
@@ -1391,16 +1411,23 @@ mod tests {
1391
1411
assert_eq ! ( debugregs, other_debugregs) ;
1392
1412
}
1393
1413
1394
- #[ cfg( any( target_arch = "x86" , target_arch = "x86_64" ) ) ]
1414
+ #[ cfg( any(
1415
+ target_arch = "x86" ,
1416
+ target_arch = "x86_64" ,
1417
+ target_arch = "arm" ,
1418
+ target_arch = "aarch64"
1419
+ ) ) ]
1395
1420
#[ test]
1396
1421
fn vcpu_events_test ( ) {
1397
1422
let kvm = Kvm :: new ( ) . unwrap ( ) ;
1398
- let vm = kvm. create_vm ( ) . unwrap ( ) ;
1399
- let vcpu = vm. create_vcpu ( 0 ) . unwrap ( ) ;
1400
- let vcpu_events = vcpu. get_vcpu_events ( ) . unwrap ( ) ;
1401
- vcpu. set_vcpu_events ( & vcpu_events) . unwrap ( ) ;
1402
- let other_vcpu_events = vcpu. get_vcpu_events ( ) . unwrap ( ) ;
1403
- assert_eq ! ( vcpu_events, other_vcpu_events) ;
1423
+ if kvm. check_extension ( Cap :: VcpuEvents ) {
1424
+ let vm = kvm. create_vm ( ) . unwrap ( ) ;
1425
+ let vcpu = vm. create_vcpu ( 0 ) . unwrap ( ) ;
1426
+ let vcpu_events = vcpu. get_vcpu_events ( ) . unwrap ( ) ;
1427
+ vcpu. set_vcpu_events ( & vcpu_events) . unwrap ( ) ;
1428
+ let other_vcpu_events = vcpu. get_vcpu_events ( ) . unwrap ( ) ;
1429
+ assert_eq ! ( vcpu_events, other_vcpu_events) ;
1430
+ }
1404
1431
}
1405
1432
1406
1433
#[ cfg( target_arch = "x86_64" ) ]
0 commit comments