mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-27 04:13:53 -06:00
rust: bindings: add Send and Sync markers for types that have bindings
This is needed for the MemoryRegionOps<T> to be declared as static; Rust requires static elements to be Sync. Reviewed-by: Zhao Liu <zhao1.liu@intel.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
5472a38cb9
commit
d449d29a99
2 changed files with 49 additions and 0 deletions
|
@ -21,9 +21,55 @@ include!("bindings.inc.rs");
|
|||
#[cfg(not(MESON))]
|
||||
include!(concat!(env!("OUT_DIR"), "/bindings.inc.rs"));
|
||||
|
||||
// SAFETY: these are implemented in C; the bindings need to assert that the
|
||||
// BQL is taken, either directly or via `BqlCell` and `BqlRefCell`.
|
||||
unsafe impl Send for BusState {}
|
||||
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 Clock {}
|
||||
unsafe impl Sync for Clock {}
|
||||
|
||||
unsafe impl Send for DeviceState {}
|
||||
unsafe impl Sync for DeviceState {}
|
||||
|
||||
unsafe impl Send for MemoryRegion {}
|
||||
unsafe impl Sync for MemoryRegion {}
|
||||
|
||||
unsafe impl Send for ObjectClass {}
|
||||
unsafe impl Sync for ObjectClass {}
|
||||
|
||||
unsafe impl Send for Object {}
|
||||
unsafe impl Sync for Object {}
|
||||
|
||||
unsafe impl Send for SysBusDevice {}
|
||||
unsafe impl Sync for SysBusDevice {}
|
||||
|
||||
// SAFETY: this is a pure data struct
|
||||
unsafe impl Send for CoalescedMemoryRange {}
|
||||
unsafe impl Sync for CoalescedMemoryRange {}
|
||||
|
||||
// SAFETY: these are constants and vtables; the Send and Sync requirements
|
||||
// are deferred to the unsafe callbacks that they contain
|
||||
unsafe impl Send for MemoryRegionOps {}
|
||||
unsafe impl Sync for MemoryRegionOps {}
|
||||
|
||||
unsafe impl Send for Property {}
|
||||
unsafe impl Sync for Property {}
|
||||
|
||||
unsafe impl Send for TypeInfo {}
|
||||
unsafe impl Sync for TypeInfo {}
|
||||
|
||||
unsafe impl Send for VMStateDescription {}
|
||||
unsafe impl Sync for VMStateDescription {}
|
||||
|
||||
unsafe impl Send for VMStateField {}
|
||||
unsafe impl Sync for VMStateField {}
|
||||
|
||||
unsafe impl Send for VMStateInfo {}
|
||||
unsafe impl Sync for VMStateInfo {}
|
||||
|
|
|
@ -43,6 +43,9 @@ where
|
|||
_marker: PhantomData<T>,
|
||||
}
|
||||
|
||||
// SAFETY: the implementation asserts via `BqlCell` that the BQL is taken
|
||||
unsafe impl<T> Sync for InterruptSource<T> where c_int: From<T> {}
|
||||
|
||||
impl InterruptSource<bool> {
|
||||
/// Send a low (`false`) value to the interrupt sink.
|
||||
pub fn lower(&self) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue