1cb7ada54SPaolo Bonzini // SPDX-License-Identifier: GPL-2.0-or-later 2cb7ada54SPaolo Bonzini #![allow( 3cb7ada54SPaolo Bonzini dead_code, 4cb7ada54SPaolo Bonzini improper_ctypes_definitions, 5cb7ada54SPaolo Bonzini improper_ctypes, 6cb7ada54SPaolo Bonzini non_camel_case_types, 7cb7ada54SPaolo Bonzini non_snake_case, 8cb7ada54SPaolo Bonzini non_upper_case_globals, 9cb7ada54SPaolo Bonzini unsafe_op_in_unsafe_fn, 102f9eec8fSPaolo Bonzini clippy::pedantic, 112f9eec8fSPaolo Bonzini clippy::restriction, 122f9eec8fSPaolo Bonzini clippy::style, 13cb7ada54SPaolo Bonzini clippy::missing_const_for_fn, 14cb7ada54SPaolo Bonzini clippy::useless_transmute, 15cb7ada54SPaolo Bonzini clippy::missing_safety_doc 16cb7ada54SPaolo Bonzini )] 17cb7ada54SPaolo Bonzini 18*ebacd14aSPaolo Bonzini //! `bindgen`-generated declarations. 19*ebacd14aSPaolo Bonzini 20cb7ada54SPaolo Bonzini #[cfg(MESON)] 21cb7ada54SPaolo Bonzini include!("bindings.inc.rs"); 22cb7ada54SPaolo Bonzini 23cb7ada54SPaolo Bonzini #[cfg(not(MESON))] 24cb7ada54SPaolo Bonzini include!(concat!(env!("OUT_DIR"), "/bindings.inc.rs")); 25cb7ada54SPaolo Bonzini 26d449d29aSPaolo Bonzini // SAFETY: these are implemented in C; the bindings need to assert that the 27d449d29aSPaolo Bonzini // BQL is taken, either directly or via `BqlCell` and `BqlRefCell`. 28d449d29aSPaolo Bonzini unsafe impl Send for BusState {} 29d449d29aSPaolo Bonzini unsafe impl Sync for BusState {} 30d449d29aSPaolo Bonzini 31d449d29aSPaolo Bonzini unsafe impl Send for CharBackend {} 32d449d29aSPaolo Bonzini unsafe impl Sync for CharBackend {} 33d449d29aSPaolo Bonzini 34d449d29aSPaolo Bonzini unsafe impl Send for Chardev {} 35d449d29aSPaolo Bonzini unsafe impl Sync for Chardev {} 36d449d29aSPaolo Bonzini 37d449d29aSPaolo Bonzini unsafe impl Send for Clock {} 38d449d29aSPaolo Bonzini unsafe impl Sync for Clock {} 39d449d29aSPaolo Bonzini 40d449d29aSPaolo Bonzini unsafe impl Send for DeviceState {} 41d449d29aSPaolo Bonzini unsafe impl Sync for DeviceState {} 42d449d29aSPaolo Bonzini 43d449d29aSPaolo Bonzini unsafe impl Send for MemoryRegion {} 44d449d29aSPaolo Bonzini unsafe impl Sync for MemoryRegion {} 45d449d29aSPaolo Bonzini 46d449d29aSPaolo Bonzini unsafe impl Send for ObjectClass {} 47d449d29aSPaolo Bonzini unsafe impl Sync for ObjectClass {} 48d449d29aSPaolo Bonzini 49d449d29aSPaolo Bonzini unsafe impl Send for Object {} 50d449d29aSPaolo Bonzini unsafe impl Sync for Object {} 51d449d29aSPaolo Bonzini 52d449d29aSPaolo Bonzini unsafe impl Send for SysBusDevice {} 53d449d29aSPaolo Bonzini unsafe impl Sync for SysBusDevice {} 54d449d29aSPaolo Bonzini 55d449d29aSPaolo Bonzini // SAFETY: this is a pure data struct 56d449d29aSPaolo Bonzini unsafe impl Send for CoalescedMemoryRange {} 57d449d29aSPaolo Bonzini unsafe impl Sync for CoalescedMemoryRange {} 58d449d29aSPaolo Bonzini 59d449d29aSPaolo Bonzini // SAFETY: these are constants and vtables; the Send and Sync requirements 60d449d29aSPaolo Bonzini // are deferred to the unsafe callbacks that they contain 61d449d29aSPaolo Bonzini unsafe impl Send for MemoryRegionOps {} 62d449d29aSPaolo Bonzini unsafe impl Sync for MemoryRegionOps {} 63d449d29aSPaolo Bonzini 64cb7ada54SPaolo Bonzini unsafe impl Send for Property {} 65cb7ada54SPaolo Bonzini unsafe impl Sync for Property {} 66d449d29aSPaolo Bonzini 67d449d29aSPaolo Bonzini unsafe impl Send for TypeInfo {} 68cb7ada54SPaolo Bonzini unsafe impl Sync for TypeInfo {} 69d449d29aSPaolo Bonzini 70d449d29aSPaolo Bonzini unsafe impl Send for VMStateDescription {} 71cb7ada54SPaolo Bonzini unsafe impl Sync for VMStateDescription {} 72d449d29aSPaolo Bonzini 73d449d29aSPaolo Bonzini unsafe impl Send for VMStateField {} 74cb7ada54SPaolo Bonzini unsafe impl Sync for VMStateField {} 75d449d29aSPaolo Bonzini 76d449d29aSPaolo Bonzini unsafe impl Send for VMStateInfo {} 77cb7ada54SPaolo Bonzini unsafe impl Sync for VMStateInfo {} 78