xref: /qemu/rust/qemu-api/src/bindings.rs (revision f8a113701dd2d28f3bedb216e59125ddcb77fd05)
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