Skip to content

Commit 5322808

Browse files
committed
fix: Resolve Rust 2024 edition compatibility issues
- Fix import paths: use bindings:: → use crate::bindings:: - Resolve zerocopy trait conflicts for union types - Add comprehensive serde support for KVM structures - Fix cross-platform compilation for x86_64, ARM64, RISC-V64 - Ensure MUSL compatibility Signed-off-by: SteelCrab <pyh5523@gmail.com>
1 parent f6b7756 commit 5322808

File tree

14 files changed

+284
-107
lines changed

14 files changed

+284
-107
lines changed

kvm-bindings/src/arm64/bindings.rs

Lines changed: 61 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ impl<T> __IncompleteArrayField<T> {
2222
}
2323
#[inline]
2424
pub unsafe fn as_slice(&self, len: usize) -> &[T] {
25-
unsafe {::std::slice::from_raw_parts(self.as_ptr(), len)}
25+
unsafe { ::std::slice::from_raw_parts(self.as_ptr(), len) }
2626
}
2727
#[inline]
2828
pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
29-
unsafe {::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len)}
29+
unsafe { ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len) }
3030
}
3131
}
3232
impl<T> ::std::fmt::Debug for __IncompleteArrayField<T> {
@@ -2067,7 +2067,11 @@ impl Default for kvm_run__bindgen_ty_1__bindgen_ty_8 {
20672067
}
20682068
impl ::std::fmt::Debug for kvm_run__bindgen_ty_1__bindgen_ty_8 {
20692069
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2070-
write ! (f , "kvm_run__bindgen_ty_1__bindgen_ty_8 {{ nr: {:?}, args: {:?}, ret: {:?}, __bindgen_anon_1: {:?} }}" , self . nr , self . args , self . ret , self . __bindgen_anon_1)
2070+
write!(
2071+
f,
2072+
"kvm_run__bindgen_ty_1__bindgen_ty_8 {{ nr: {:?}, args: {:?}, ret: {:?}, __bindgen_anon_1: {:?} }}",
2073+
self.nr, self.args, self.ret, self.__bindgen_anon_1
2074+
)
20712075
}
20722076
}
20732077
#[repr(C)]
@@ -2194,8 +2198,18 @@ const _: () = {
21942198
["Alignment of kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1"]
21952199
[::std::mem::align_of::<kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1>(
21962200
) - 1usize];
2197-
["Offset of field: kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1::insn_size"] [:: std :: mem :: offset_of ! (kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1 , insn_size) - 0usize] ;
2198-
["Offset of field: kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1::insn_bytes"] [:: std :: mem :: offset_of ! (kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1 , insn_bytes) - 1usize] ;
2201+
[
2202+
"Offset of field: kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1::insn_size",
2203+
][::std::mem::offset_of!(
2204+
kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1,
2205+
insn_size
2206+
) - 0usize];
2207+
[
2208+
"Offset of field: kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1::insn_bytes",
2209+
][::std::mem::offset_of!(
2210+
kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1,
2211+
insn_bytes
2212+
) - 1usize];
21992213
};
22002214
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
22012215
const _: () = {
@@ -2245,7 +2259,11 @@ impl Default for kvm_run__bindgen_ty_1__bindgen_ty_14 {
22452259
}
22462260
impl ::std::fmt::Debug for kvm_run__bindgen_ty_1__bindgen_ty_14 {
22472261
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2248-
write ! (f , "kvm_run__bindgen_ty_1__bindgen_ty_14 {{ suberror: {:?}, ndata: {:?}, flags: {:?}, __bindgen_anon_1: {:?} }}" , self . suberror , self . ndata , self . flags , self . __bindgen_anon_1)
2262+
write!(
2263+
f,
2264+
"kvm_run__bindgen_ty_1__bindgen_ty_14 {{ suberror: {:?}, ndata: {:?}, flags: {:?}, __bindgen_anon_1: {:?} }}",
2265+
self.suberror, self.ndata, self.flags, self.__bindgen_anon_1
2266+
)
22492267
}
22502268
}
22512269
#[repr(C)]
@@ -2390,7 +2408,11 @@ impl Default for kvm_run__bindgen_ty_1__bindgen_ty_19 {
23902408
}
23912409
impl ::std::fmt::Debug for kvm_run__bindgen_ty_1__bindgen_ty_19 {
23922410
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2393-
write ! (f , "kvm_run__bindgen_ty_1__bindgen_ty_19 {{ type: {:?}, ndata: {:?}, __bindgen_anon_1: {:?} }}" , self . type_ , self . ndata , self . __bindgen_anon_1)
2411+
write!(
2412+
f,
2413+
"kvm_run__bindgen_ty_1__bindgen_ty_19 {{ type: {:?}, ndata: {:?}, __bindgen_anon_1: {:?} }}",
2414+
self.type_, self.ndata, self.__bindgen_anon_1
2415+
)
23942416
}
23952417
}
23962418
#[repr(C)]
@@ -2705,7 +2727,23 @@ impl Default for kvm_run {
27052727
}
27062728
impl ::std::fmt::Debug for kvm_run {
27072729
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2708-
write ! (f , "kvm_run {{ request_interrupt_window: {:?}, immediate_exit: {:?}, padding1: {:?}, exit_reason: {:?}, ready_for_interrupt_injection: {:?}, if_flag: {:?}, flags: {:?}, cr8: {:?}, apic_base: {:?}, __bindgen_anon_1: {:?}, kvm_valid_regs: {:?}, kvm_dirty_regs: {:?}, s: {:?} }}" , self . request_interrupt_window , self . immediate_exit , self . padding1 , self . exit_reason , self . ready_for_interrupt_injection , self . if_flag , self . flags , self . cr8 , self . apic_base , self . __bindgen_anon_1 , self . kvm_valid_regs , self . kvm_dirty_regs , self . s)
2730+
write!(
2731+
f,
2732+
"kvm_run {{ request_interrupt_window: {:?}, immediate_exit: {:?}, padding1: {:?}, exit_reason: {:?}, ready_for_interrupt_injection: {:?}, if_flag: {:?}, flags: {:?}, cr8: {:?}, apic_base: {:?}, __bindgen_anon_1: {:?}, kvm_valid_regs: {:?}, kvm_dirty_regs: {:?}, s: {:?} }}",
2733+
self.request_interrupt_window,
2734+
self.immediate_exit,
2735+
self.padding1,
2736+
self.exit_reason,
2737+
self.ready_for_interrupt_injection,
2738+
self.if_flag,
2739+
self.flags,
2740+
self.cr8,
2741+
self.apic_base,
2742+
self.__bindgen_anon_1,
2743+
self.kvm_valid_regs,
2744+
self.kvm_dirty_regs,
2745+
self.s
2746+
)
27092747
}
27102748
}
27112749
#[repr(C)]
@@ -2835,7 +2873,11 @@ impl Default for kvm_coalesced_mmio {
28352873
}
28362874
impl ::std::fmt::Debug for kvm_coalesced_mmio {
28372875
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2838-
write ! (f , "kvm_coalesced_mmio {{ phys_addr: {:?}, len: {:?}, __bindgen_anon_1: {:?}, data: {:?} }}" , self . phys_addr , self . len , self . __bindgen_anon_1 , self . data)
2876+
write!(
2877+
f,
2878+
"kvm_coalesced_mmio {{ phys_addr: {:?}, len: {:?}, __bindgen_anon_1: {:?}, data: {:?} }}",
2879+
self.phys_addr, self.len, self.__bindgen_anon_1, self.data
2880+
)
28392881
}
28402882
}
28412883
#[repr(C)]
@@ -3037,7 +3079,11 @@ impl Default for kvm_clear_dirty_log {
30373079
}
30383080
impl ::std::fmt::Debug for kvm_clear_dirty_log {
30393081
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3040-
write ! (f , "kvm_clear_dirty_log {{ slot: {:?}, num_pages: {:?}, first_page: {:?}, __bindgen_anon_1: {:?} }}" , self . slot , self . num_pages , self . first_page , self . __bindgen_anon_1)
3082+
write!(
3083+
f,
3084+
"kvm_clear_dirty_log {{ slot: {:?}, num_pages: {:?}, first_page: {:?}, __bindgen_anon_1: {:?} }}",
3085+
self.slot, self.num_pages, self.first_page, self.__bindgen_anon_1
3086+
)
30413087
}
30423088
}
30433089
#[repr(C)]
@@ -3272,7 +3318,11 @@ impl Default for kvm_irq_routing_msi {
32723318
}
32733319
impl ::std::fmt::Debug for kvm_irq_routing_msi {
32743320
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3275-
write ! (f , "kvm_irq_routing_msi {{ address_lo: {:?}, address_hi: {:?}, data: {:?}, __bindgen_anon_1: {:?} }}" , self . address_lo , self . address_hi , self . data , self . __bindgen_anon_1)
3321+
write!(
3322+
f,
3323+
"kvm_irq_routing_msi {{ address_lo: {:?}, address_hi: {:?}, data: {:?}, __bindgen_anon_1: {:?} }}",
3324+
self.address_lo, self.address_hi, self.data, self.__bindgen_anon_1
3325+
)
32763326
}
32773327
}
32783328
#[repr(C)]

kvm-bindings/src/arm64/serialize.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
use bindings::{
1+
use crate::bindings::{
22
kvm_irq_routing, kvm_irq_routing_entry, kvm_irq_routing_entry__bindgen_ty_1,
33
kvm_irq_routing_msi__bindgen_ty_1, kvm_mp_state, kvm_one_reg, kvm_regs, kvm_vcpu_init,
44
user_fpsimd_state, user_pt_regs,
55
};
66
use serde::{Deserialize, Deserializer, Serialize, Serializer};
7-
use zerocopy::{transmute, IntoBytes};
7+
use zerocopy::{IntoBytes, transmute};
88

99
serde_impls! {
1010
user_pt_regs,

kvm-bindings/src/riscv64/bindings.rs

Lines changed: 61 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ impl<T> __IncompleteArrayField<T> {
2222
}
2323
#[inline]
2424
pub unsafe fn as_slice(&self, len: usize) -> &[T] {
25-
unsafe {::std::slice::from_raw_parts(self.as_ptr(), len)}
25+
unsafe { ::std::slice::from_raw_parts(self.as_ptr(), len) }
2626
}
2727
#[inline]
2828
pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
29-
unsafe {::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len)}
29+
unsafe { ::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len) }
3030
}
3131
}
3232
impl<T> ::std::fmt::Debug for __IncompleteArrayField<T> {
@@ -1925,7 +1925,11 @@ impl Default for kvm_run__bindgen_ty_1__bindgen_ty_8 {
19251925
}
19261926
impl ::std::fmt::Debug for kvm_run__bindgen_ty_1__bindgen_ty_8 {
19271927
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
1928-
write ! (f , "kvm_run__bindgen_ty_1__bindgen_ty_8 {{ nr: {:?}, args: {:?}, ret: {:?}, __bindgen_anon_1: {:?} }}" , self . nr , self . args , self . ret , self . __bindgen_anon_1)
1928+
write!(
1929+
f,
1930+
"kvm_run__bindgen_ty_1__bindgen_ty_8 {{ nr: {:?}, args: {:?}, ret: {:?}, __bindgen_anon_1: {:?} }}",
1931+
self.nr, self.args, self.ret, self.__bindgen_anon_1
1932+
)
19291933
}
19301934
}
19311935
#[repr(C)]
@@ -2052,8 +2056,18 @@ const _: () = {
20522056
["Alignment of kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1"]
20532057
[::std::mem::align_of::<kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1>(
20542058
) - 1usize];
2055-
["Offset of field: kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1::insn_size"] [:: std :: mem :: offset_of ! (kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1 , insn_size) - 0usize] ;
2056-
["Offset of field: kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1::insn_bytes"] [:: std :: mem :: offset_of ! (kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1 , insn_bytes) - 1usize] ;
2059+
[
2060+
"Offset of field: kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1::insn_size",
2061+
][::std::mem::offset_of!(
2062+
kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1,
2063+
insn_size
2064+
) - 0usize];
2065+
[
2066+
"Offset of field: kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1::insn_bytes",
2067+
][::std::mem::offset_of!(
2068+
kvm_run__bindgen_ty_1__bindgen_ty_14__bindgen_ty_1__bindgen_ty_1,
2069+
insn_bytes
2070+
) - 1usize];
20572071
};
20582072
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
20592073
const _: () = {
@@ -2103,7 +2117,11 @@ impl Default for kvm_run__bindgen_ty_1__bindgen_ty_14 {
21032117
}
21042118
impl ::std::fmt::Debug for kvm_run__bindgen_ty_1__bindgen_ty_14 {
21052119
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2106-
write ! (f , "kvm_run__bindgen_ty_1__bindgen_ty_14 {{ suberror: {:?}, ndata: {:?}, flags: {:?}, __bindgen_anon_1: {:?} }}" , self . suberror , self . ndata , self . flags , self . __bindgen_anon_1)
2120+
write!(
2121+
f,
2122+
"kvm_run__bindgen_ty_1__bindgen_ty_14 {{ suberror: {:?}, ndata: {:?}, flags: {:?}, __bindgen_anon_1: {:?} }}",
2123+
self.suberror, self.ndata, self.flags, self.__bindgen_anon_1
2124+
)
21072125
}
21082126
}
21092127
#[repr(C)]
@@ -2248,7 +2266,11 @@ impl Default for kvm_run__bindgen_ty_1__bindgen_ty_19 {
22482266
}
22492267
impl ::std::fmt::Debug for kvm_run__bindgen_ty_1__bindgen_ty_19 {
22502268
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2251-
write ! (f , "kvm_run__bindgen_ty_1__bindgen_ty_19 {{ type: {:?}, ndata: {:?}, __bindgen_anon_1: {:?} }}" , self . type_ , self . ndata , self . __bindgen_anon_1)
2269+
write!(
2270+
f,
2271+
"kvm_run__bindgen_ty_1__bindgen_ty_19 {{ type: {:?}, ndata: {:?}, __bindgen_anon_1: {:?} }}",
2272+
self.type_, self.ndata, self.__bindgen_anon_1
2273+
)
22522274
}
22532275
}
22542276
#[repr(C)]
@@ -2563,7 +2585,23 @@ impl Default for kvm_run {
25632585
}
25642586
impl ::std::fmt::Debug for kvm_run {
25652587
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2566-
write ! (f , "kvm_run {{ request_interrupt_window: {:?}, immediate_exit: {:?}, padding1: {:?}, exit_reason: {:?}, ready_for_interrupt_injection: {:?}, if_flag: {:?}, flags: {:?}, cr8: {:?}, apic_base: {:?}, __bindgen_anon_1: {:?}, kvm_valid_regs: {:?}, kvm_dirty_regs: {:?}, s: {:?} }}" , self . request_interrupt_window , self . immediate_exit , self . padding1 , self . exit_reason , self . ready_for_interrupt_injection , self . if_flag , self . flags , self . cr8 , self . apic_base , self . __bindgen_anon_1 , self . kvm_valid_regs , self . kvm_dirty_regs , self . s)
2588+
write!(
2589+
f,
2590+
"kvm_run {{ request_interrupt_window: {:?}, immediate_exit: {:?}, padding1: {:?}, exit_reason: {:?}, ready_for_interrupt_injection: {:?}, if_flag: {:?}, flags: {:?}, cr8: {:?}, apic_base: {:?}, __bindgen_anon_1: {:?}, kvm_valid_regs: {:?}, kvm_dirty_regs: {:?}, s: {:?} }}",
2591+
self.request_interrupt_window,
2592+
self.immediate_exit,
2593+
self.padding1,
2594+
self.exit_reason,
2595+
self.ready_for_interrupt_injection,
2596+
self.if_flag,
2597+
self.flags,
2598+
self.cr8,
2599+
self.apic_base,
2600+
self.__bindgen_anon_1,
2601+
self.kvm_valid_regs,
2602+
self.kvm_dirty_regs,
2603+
self.s
2604+
)
25672605
}
25682606
}
25692607
#[repr(C)]
@@ -2693,7 +2731,11 @@ impl Default for kvm_coalesced_mmio {
26932731
}
26942732
impl ::std::fmt::Debug for kvm_coalesced_mmio {
26952733
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2696-
write ! (f , "kvm_coalesced_mmio {{ phys_addr: {:?}, len: {:?}, __bindgen_anon_1: {:?}, data: {:?} }}" , self . phys_addr , self . len , self . __bindgen_anon_1 , self . data)
2734+
write!(
2735+
f,
2736+
"kvm_coalesced_mmio {{ phys_addr: {:?}, len: {:?}, __bindgen_anon_1: {:?}, data: {:?} }}",
2737+
self.phys_addr, self.len, self.__bindgen_anon_1, self.data
2738+
)
26972739
}
26982740
}
26992741
#[repr(C)]
@@ -2895,7 +2937,11 @@ impl Default for kvm_clear_dirty_log {
28952937
}
28962938
impl ::std::fmt::Debug for kvm_clear_dirty_log {
28972939
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
2898-
write ! (f , "kvm_clear_dirty_log {{ slot: {:?}, num_pages: {:?}, first_page: {:?}, __bindgen_anon_1: {:?} }}" , self . slot , self . num_pages , self . first_page , self . __bindgen_anon_1)
2940+
write!(
2941+
f,
2942+
"kvm_clear_dirty_log {{ slot: {:?}, num_pages: {:?}, first_page: {:?}, __bindgen_anon_1: {:?} }}",
2943+
self.slot, self.num_pages, self.first_page, self.__bindgen_anon_1
2944+
)
28992945
}
29002946
}
29012947
#[repr(C)]
@@ -3130,7 +3176,11 @@ impl Default for kvm_irq_routing_msi {
31303176
}
31313177
impl ::std::fmt::Debug for kvm_irq_routing_msi {
31323178
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
3133-
write ! (f , "kvm_irq_routing_msi {{ address_lo: {:?}, address_hi: {:?}, data: {:?}, __bindgen_anon_1: {:?} }}" , self . address_lo , self . address_hi , self . data , self . __bindgen_anon_1)
3179+
write!(
3180+
f,
3181+
"kvm_irq_routing_msi {{ address_lo: {:?}, address_hi: {:?}, data: {:?}, __bindgen_anon_1: {:?} }}",
3182+
self.address_lo, self.address_hi, self.data, self.__bindgen_anon_1
3183+
)
31343184
}
31353185
}
31363186
#[repr(C)]

kvm-bindings/src/riscv64/serialize.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use crate::bindings::{
99
kvm_riscv_timer, user_regs_struct,
1010
};
1111
use serde::{Deserialize, Deserializer, Serialize, Serializer};
12-
use zerocopy::{transmute, IntoBytes};
12+
use zerocopy::{IntoBytes, transmute};
1313

1414
serde_impls! {
1515
kvm_mp_state,
@@ -52,8 +52,8 @@ unsafe impl IntoBytes for kvm_irq_routing_entry__bindgen_ty_1 {
5252

5353
#[cfg(test)]
5454
mod tests {
55+
use crate::serde::{Deserialize, Serialize};
5556
use bindings::*;
56-
use serde::{Deserialize, Serialize};
5757

5858
fn is_serde<T: Serialize + for<'de> Deserialize<'de> + Default>() {
5959
let config = bincode::config::standard();

0 commit comments

Comments
 (0)