mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-27 04:13:53 -06:00
rust/timer/hpet: define hpet_fw_cfg
Define HPETFwEntry structure with the same memory layout as hpet_fw_entry in C. Further, define the global hpet_cfg variable in Rust which is the same as the C version. This hpet_cfg variable in Rust will replace the C version one and allows both Rust code and C code to access it. The Rust version of hpet_cfg is self-contained, avoiding unsafe access to C code. Signed-off-by: Zhao Liu <zhao1.liu@intel.com> Link: https://lore.kernel.org/r/20250210030051.2562726-8-zhao1.liu@intel.com Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
eadb83f9a3
commit
0534248a6b
9 changed files with 132 additions and 2 deletions
|
@ -56,6 +56,7 @@ pub unsafe trait Zeroable: Default {
|
|||
/// ## Differences with `core::mem::zeroed`
|
||||
///
|
||||
/// `const_zero` zeroes padding bits, while `core::mem::zeroed` doesn't
|
||||
#[macro_export]
|
||||
macro_rules! const_zero {
|
||||
// This macro to produce a type-generic zero constant is taken from the
|
||||
// const_zero crate (v0.1.1):
|
||||
|
@ -77,10 +78,11 @@ macro_rules! const_zero {
|
|||
}
|
||||
|
||||
/// A wrapper to implement the `Zeroable` trait through the `const_zero` macro.
|
||||
#[macro_export]
|
||||
macro_rules! impl_zeroable {
|
||||
($type:ty) => {
|
||||
unsafe impl Zeroable for $type {
|
||||
const ZERO: Self = unsafe { const_zero!($type) };
|
||||
unsafe impl $crate::zeroable::Zeroable for $type {
|
||||
const ZERO: Self = unsafe { $crate::const_zero!($type) };
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue