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