]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
rust: chardev: wrap Chardev with Opaque<>
authorPaolo Bonzini <pbonzini@redhat.com>
Fri, 14 Feb 2025 11:34:47 +0000 (12:34 +0100)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 6 Mar 2025 11:44:47 +0000 (12:44 +0100)
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
rust/qemu-api/src/bindings.rs
rust/qemu-api/src/chardev.rs
rust/qemu-api/src/qdev.rs

index 26cc8de0cf2addb9b8999e65ca4cfd8a02cf655b..c3f36108bd5863a6157f370db5f2b195e3417702 100644 (file)
@@ -31,9 +31,6 @@ unsafe impl Sync for BusState {}
 unsafe impl Send for CharBackend {}
 unsafe impl Sync for CharBackend {}
 
-unsafe impl Send for Chardev {}
-unsafe impl Sync for Chardev {}
-
 unsafe impl Send for ObjectClass {}
 unsafe impl Sync for ObjectClass {}
 
index 74cfb634e5fea5928befb55b03eb275f471f48f2..a35b9217e904cb18ef6fb1175fddf8f6d0d785d1 100644 (file)
@@ -6,9 +6,13 @@
 
 use std::ffi::CStr;
 
-use crate::{bindings, prelude::*};
+use crate::{bindings, cell::Opaque, prelude::*};
+
+/// A safe wrapper around [`bindings::Chardev`].
+#[repr(transparent)]
+#[derive(qemu_api_macros::Wrapper)]
+pub struct Chardev(Opaque<bindings::Chardev>);
 
-pub type Chardev = bindings::Chardev;
 pub type ChardevClass = bindings::ChardevClass;
 
 unsafe impl ObjectType for Chardev {
index 1c4a67b57286b3bc9777b0fbebee8f9522cf443a..18b4a9ba687d9f80e47b557aee64533517a0f0bd 100644 (file)
@@ -334,6 +334,7 @@ where
     fn prop_set_chr(&self, propname: &str, chr: &Owned<Chardev>) {
         assert!(bql_locked());
         let c_propname = CString::new(propname).unwrap();
+        let chr: &Chardev = chr;
         unsafe {
             bindings::qdev_prop_set_chr(
                 self.upcast().as_mut_ptr(),