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 18ebacd14aSPaolo Bonzini //! `bindgen`-generated declarations. 19ebacd14aSPaolo 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`. 28*2ad011d4SPaolo Bonzini // When bindings for character devices are introduced, this can be 29*2ad011d4SPaolo Bonzini // moved to the Opaque<> wrapper in src/chardev.rs. 30d449d29aSPaolo Bonzini unsafe impl Send for CharBackend {} 31d449d29aSPaolo Bonzini unsafe impl Sync for CharBackend {} 32d449d29aSPaolo Bonzini 33d449d29aSPaolo Bonzini // SAFETY: this is a pure data struct 34d449d29aSPaolo Bonzini unsafe impl Send for CoalescedMemoryRange {} 35d449d29aSPaolo Bonzini unsafe impl Sync for CoalescedMemoryRange {} 36d449d29aSPaolo Bonzini 37d449d29aSPaolo Bonzini // SAFETY: these are constants and vtables; the Send and Sync requirements 38d449d29aSPaolo Bonzini // are deferred to the unsafe callbacks that they contain 39d449d29aSPaolo Bonzini unsafe impl Send for MemoryRegionOps {} 40d449d29aSPaolo Bonzini unsafe impl Sync for MemoryRegionOps {} 41d449d29aSPaolo Bonzini 42cb7ada54SPaolo Bonzini unsafe impl Send for Property {} 43cb7ada54SPaolo Bonzini unsafe impl Sync for Property {} 44d449d29aSPaolo Bonzini 45d449d29aSPaolo Bonzini unsafe impl Send for TypeInfo {} 46cb7ada54SPaolo Bonzini unsafe impl Sync for TypeInfo {} 47d449d29aSPaolo Bonzini 48d449d29aSPaolo Bonzini unsafe impl Send for VMStateDescription {} 49cb7ada54SPaolo Bonzini unsafe impl Sync for VMStateDescription {} 50d449d29aSPaolo Bonzini 51d449d29aSPaolo Bonzini unsafe impl Send for VMStateField {} 52cb7ada54SPaolo Bonzini unsafe impl Sync for VMStateField {} 53d449d29aSPaolo Bonzini 54d449d29aSPaolo Bonzini unsafe impl Send for VMStateInfo {} 55cb7ada54SPaolo Bonzini unsafe impl Sync for VMStateInfo {} 56