aboutsummaryrefslogtreecommitdiff
path: root/rust/qemu-api/src/lib.rs
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2024-12-05 14:29:13 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2024-12-10 18:49:26 +0100
commitab870fa106e0e3f48db2c5ef0507d107b1b41a21 (patch)
treecb6b0d6b5fc788dc027981f4b4734401e96e9e0d /rust/qemu-api/src/lib.rs
parent4ed4da164c957a4475b9d075206f33113a69abda (diff)
downloadqemu-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.rs1
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;