diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2024-12-05 14:29:13 +0100 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2024-12-10 18:49:26 +0100 |
commit | ab870fa106e0e3f48db2c5ef0507d107b1b41a21 (patch) | |
tree | cb6b0d6b5fc788dc027981f4b4734401e96e9e0d /rust/qemu-api/src/lib.rs | |
parent | 4ed4da164c957a4475b9d075206f33113a69abda (diff) | |
download | qemu-ab870fa106e0e3f48db2c5ef0507d107b1b41a21.zip qemu-ab870fa106e0e3f48db2c5ef0507d107b1b41a21.tar.gz qemu-ab870fa106e0e3f48db2c5ef0507d107b1b41a21.tar.bz2 |
rust: add a bit operation module
The bindgen supports `static inline` function binding since v0.64.0 as
an experimental feature (`--wrap-static-fns`), and stabilizes it after
v0.70.0.
But the oldest version of bindgen supported by QEMU is v0.60.1, so
there's no way to generate the binding for deposit64() which is `static
inline` (in include/qemu/bitops.h).
Instead, implement it by hand in Rust and make it available for all
unsigned types through an IntegerExt trait. Since it only involves bit
operations, the Rust version of the code is almost identical to the
original C version, but it applies to more types than just u64.
Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
Co-authored-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'rust/qemu-api/src/lib.rs')
-rw-r--r-- | rust/qemu-api/src/lib.rs | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/rust/qemu-api/src/lib.rs b/rust/qemu-api/src/lib.rs index 0efbef4..9e007e1 100644 --- a/rust/qemu-api/src/lib.rs +++ b/rust/qemu-api/src/lib.rs @@ -12,6 +12,7 @@ pub mod bindings; #[rustfmt::skip] pub mod prelude; +pub mod bitops; pub mod c_str; pub mod cell; pub mod definitions; |