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