@@ -57,33 +57,33 @@ impl DeviceFd {
57
57
/// let kvm = Kvm::new().unwrap();
58
58
/// let vm = kvm.create_vm().unwrap();
59
59
///
60
- /// #[cfg(not(target_arch = "riscv64"))]
61
- /// {
62
- /// # use kvm_bindings::{
63
- /// # kvm_device_type_KVM_DEV_TYPE_VFIO,
64
- /// # KVM_DEV_VFIO_GROUP, KVM_DEV_VFIO_GROUP_ADD, KVM_CREATE_DEVICE_TEST
65
- /// # };
66
- /// let mut device = kvm_bindings::kvm_create_device {
67
- /// type_: kvm_device_type_KVM_DEV_TYPE_VFIO,
68
- /// fd: 0,
69
- /// flags: KVM_CREATE_DEVICE_TEST,
70
- /// };
60
+ /// # # [cfg(not(target_arch = "riscv64"))]
61
+ /// # {
62
+ /// # use kvm_bindings::{
63
+ /// # kvm_device_type_KVM_DEV_TYPE_VFIO,
64
+ /// # KVM_DEV_VFIO_GROUP, KVM_DEV_VFIO_GROUP_ADD, KVM_CREATE_DEVICE_TEST
65
+ /// # };
66
+ /// let mut device = kvm_bindings::kvm_create_device {
67
+ /// type_: kvm_device_type_KVM_DEV_TYPE_VFIO,
68
+ /// fd: 0,
69
+ /// flags: KVM_CREATE_DEVICE_TEST,
70
+ /// };
71
71
///
72
- /// let device_fd = vm
73
- /// .create_device(&mut device)
74
- /// .expect("Cannot create KVM device");
72
+ /// let device_fd = vm
73
+ /// .create_device(&mut device)
74
+ /// .expect("Cannot create KVM device");
75
75
///
76
- /// let dist_attr = kvm_bindings::kvm_device_attr {
77
- /// group: KVM_DEV_VFIO_GROUP,
78
- /// attr: u64::from(KVM_DEV_VFIO_GROUP_ADD),
79
- /// addr: 0x0,
80
- /// flags: 0,
81
- /// };
76
+ /// let dist_attr = kvm_bindings::kvm_device_attr {
77
+ /// group: KVM_DEV_VFIO_GROUP,
78
+ /// attr: u64::from(KVM_DEV_VFIO_GROUP_ADD),
79
+ /// addr: 0x0,
80
+ /// flags: 0,
81
+ /// };
82
82
///
83
- /// if (device_fd.has_device_attr(&dist_attr).is_ok()) {
84
- /// device_fd.set_device_attr(&dist_attr).unwrap();
85
- /// }
83
+ /// if (device_fd.has_device_attr(&dist_attr).is_ok()) {
84
+ /// device_fd.set_device_attr(&dist_attr).unwrap();
86
85
/// }
86
+ /// # }
87
87
/// ```
88
88
pub fn set_device_attr ( & self , device_attr : & kvm_device_attr ) -> Result < ( ) > {
89
89
// SAFETY: We are calling this function with a Device fd, and we trust the kernel.
@@ -120,46 +120,46 @@ impl DeviceFd {
120
120
/// including that it is safe to write to the `addr` member.
121
121
///
122
122
/// # Examples
123
+ ///
124
+ /// Getting the number of IRQs for a GICv2 device on an aarch64 platform
125
+ ///
123
126
/// ```rust
124
127
/// # extern crate kvm_ioctls;
125
128
/// # extern crate kvm_bindings;
126
129
/// # use kvm_ioctls::Kvm;
127
- ///
128
130
/// let kvm = Kvm::new().unwrap();
129
131
/// let vm = kvm.create_vm().unwrap();
130
132
///
131
- /// // As on x86_64, `get_device_attr` is not necessarily needed. Therefore here
132
- /// // the code example is only for AArch64.
133
- /// #[cfg(any(target_arch = "aarch64"))]
134
- /// {
135
- /// use kvm_bindings::{
136
- /// kvm_device_type_KVM_DEV_TYPE_ARM_VGIC_V2, kvm_device_type_KVM_DEV_TYPE_ARM_VGIC_V3,
137
- /// KVM_DEV_ARM_VGIC_GRP_NR_IRQS,
138
- /// };
133
+ /// # #[cfg(target_arch = "aarch64")]
134
+ /// # {
135
+ /// use kvm_bindings::{
136
+ /// kvm_device_type_KVM_DEV_TYPE_ARM_VGIC_V2, kvm_device_type_KVM_DEV_TYPE_ARM_VGIC_V3,
137
+ /// KVM_DEV_ARM_VGIC_GRP_NR_IRQS,
138
+ /// };
139
139
///
140
- /// // Create a GIC device.
141
- /// let mut gic_device = kvm_bindings::kvm_create_device {
142
- /// type_: kvm_device_type_KVM_DEV_TYPE_ARM_VGIC_V3,
143
- /// fd: 0,
144
- /// flags: 0,
145
- /// };
146
- /// let device_fd = match vm.create_device(&mut gic_device) {
147
- /// Ok(fd) => fd,
148
- /// Err(_) => {
149
- /// gic_device.type_ = kvm_device_type_KVM_DEV_TYPE_ARM_VGIC_V2;
150
- /// vm.create_device(&mut gic_device)
151
- /// .expect("Cannot create KVM vGIC device")
152
- /// }
153
- /// };
140
+ /// // Create a GIC device.
141
+ /// let mut gic_device = kvm_bindings::kvm_create_device {
142
+ /// type_: kvm_device_type_KVM_DEV_TYPE_ARM_VGIC_V3,
143
+ /// fd: 0,
144
+ /// flags: 0,
145
+ /// };
146
+ /// let device_fd = match vm.create_device(&mut gic_device) {
147
+ /// Ok(fd) => fd,
148
+ /// Err(_) => {
149
+ /// gic_device.type_ = kvm_device_type_KVM_DEV_TYPE_ARM_VGIC_V2;
150
+ /// vm.create_device(&mut gic_device)
151
+ /// .expect("Cannot create KVM vGIC device")
152
+ /// }
153
+ /// };
154
154
///
155
- /// let mut data: u32 = 0;
156
- /// let mut gic_attr = kvm_bindings::kvm_device_attr::default();
157
- /// gic_attr.group = KVM_DEV_ARM_VGIC_GRP_NR_IRQS;
158
- /// gic_attr.addr = &mut data as *mut u32 as u64;
155
+ /// let mut data: u32 = 0;
156
+ /// let mut gic_attr = kvm_bindings::kvm_device_attr::default();
157
+ /// gic_attr.group = KVM_DEV_ARM_VGIC_GRP_NR_IRQS;
158
+ /// gic_attr.addr = &mut data as *mut u32 as u64;
159
159
///
160
- /// // SAFETY: gic_attr.addr is safe to write to.
161
- /// unsafe { device_fd.get_device_attr(&mut gic_attr) }.unwrap();
162
- /// }
160
+ /// // SAFETY: gic_attr.addr is safe to write to.
161
+ /// unsafe { device_fd.get_device_attr(&mut gic_attr) }.unwrap();
162
+ /// # }
163
163
/// ```
164
164
pub unsafe fn get_device_attr ( & self , device_attr : & mut kvm_device_attr ) -> Result < ( ) > {
165
165
// SAFETY: Caller has ensured device_attr.addr is safe to write to.
0 commit comments