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, 14*b652d512SPaolo Bonzini clippy::ptr_offset_with_cast, 15cb7ada54SPaolo Bonzini clippy::useless_transmute, 16cb7ada54SPaolo Bonzini clippy::missing_safety_doc 17cb7ada54SPaolo Bonzini )] 18cb7ada54SPaolo Bonzini 19ebacd14aSPaolo Bonzini //! `bindgen`-generated declarations. 20ebacd14aSPaolo Bonzini 21cb7ada54SPaolo Bonzini #[cfg(MESON)] 22cb7ada54SPaolo Bonzini include!("bindings.inc.rs"); 23cb7ada54SPaolo Bonzini 24cb7ada54SPaolo Bonzini #[cfg(not(MESON))] 25cb7ada54SPaolo Bonzini include!(concat!(env!("OUT_DIR"), "/bindings.inc.rs")); 26cb7ada54SPaolo Bonzini 27d449d29aSPaolo Bonzini // SAFETY: these are implemented in C; the bindings need to assert that the 28d449d29aSPaolo Bonzini // BQL is taken, either directly or via `BqlCell` and `BqlRefCell`. 292ad011d4SPaolo Bonzini // When bindings for character devices are introduced, this can be 302ad011d4SPaolo Bonzini // moved to the Opaque<> wrapper in src/chardev.rs. 31d449d29aSPaolo Bonzini unsafe impl Send for CharBackend {} 32d449d29aSPaolo Bonzini unsafe impl Sync for CharBackend {} 33d449d29aSPaolo Bonzini 34d449d29aSPaolo Bonzini // SAFETY: this is a pure data struct 35d449d29aSPaolo Bonzini unsafe impl Send for CoalescedMemoryRange {} 36d449d29aSPaolo Bonzini unsafe impl Sync for CoalescedMemoryRange {} 37d449d29aSPaolo Bonzini 38d449d29aSPaolo Bonzini // SAFETY: these are constants and vtables; the Send and Sync requirements 39d449d29aSPaolo Bonzini // are deferred to the unsafe callbacks that they contain 40d449d29aSPaolo Bonzini unsafe impl Send for MemoryRegionOps {} 41d449d29aSPaolo Bonzini unsafe impl Sync for MemoryRegionOps {} 42d449d29aSPaolo Bonzini 43cb7ada54SPaolo Bonzini unsafe impl Send for Property {} 44cb7ada54SPaolo Bonzini unsafe impl Sync for Property {} 45d449d29aSPaolo Bonzini 46d449d29aSPaolo Bonzini unsafe impl Send for TypeInfo {} 47cb7ada54SPaolo Bonzini unsafe impl Sync for TypeInfo {} 48d449d29aSPaolo Bonzini 49d449d29aSPaolo Bonzini unsafe impl Send for VMStateDescription {} 50cb7ada54SPaolo Bonzini unsafe impl Sync for VMStateDescription {} 51d449d29aSPaolo Bonzini 52d449d29aSPaolo Bonzini unsafe impl Send for VMStateField {} 53cb7ada54SPaolo Bonzini unsafe impl Sync for VMStateField {} 54d449d29aSPaolo Bonzini 55d449d29aSPaolo Bonzini unsafe impl Send for VMStateInfo {} 56cb7ada54SPaolo Bonzini unsafe impl Sync for VMStateInfo {} 57