example as follows::
#[repr(transparent)]
- #[derive(Debug, qemu_api_macros::Wrapper)]
+ #[derive(Debug, common::Wrapper)]
pub struct Object(Opaque<bindings::Object>);
where the special ``derive`` macro provides useful methods such as
"bql",
"common",
"migration",
- "qemu_macros",
"qom",
"util",
]
version = "0.1.0"
dependencies = [
"libc",
+ "qemu_macros",
]
[[package]]
"common",
"hwcore",
"migration",
- "qemu_macros",
"qom",
"system",
"util",
version = "0.1.0"
dependencies = [
"common",
- "qemu_macros",
"util",
]
"common",
"hwcore",
"migration",
- "qemu_macros",
"qom",
"system",
"util",
version = "0.1.0"
dependencies = [
"common",
- "qemu_macros",
"qom",
"util",
]
"common",
"hwcore",
"migration",
- "qemu_macros",
"qom",
"system",
"util",
"common",
"foreign",
"libc",
- "qemu_macros",
]
[[package]]
migration = { path = "../migration" }
qom = { path = "../qom" }
util = { path = "../util" }
-qemu_macros = { path = "../qemu-macros" }
[lints]
workspace = true
dependencies: [common_rs, qemu_macros],
)
-chardev_rs = declare_dependency(link_with: [_chardev_rs], dependencies: [qemu_macros, chardev, qemuutil])
+chardev_rs = declare_dependency(link_with: [_chardev_rs], dependencies: [chardev, qemuutil])
/// A safe wrapper around [`bindings::Chardev`].
#[repr(transparent)]
-#[derive(qemu_macros::Wrapper)]
+#[derive(common::Wrapper)]
pub struct Chardev(Opaque<bindings::Chardev>);
pub type ChardevClass = bindings::ChardevClass;
[dependencies]
libc.workspace = true
+qemu_macros = { path = "../qemu-macros" }
[lints]
workspace = true
override_options: ['rust_std=2021', 'build.rust_std=2021'],
rust_abi: 'rust',
rust_args: _common_cfg,
- dependencies: [libc_rs],
+ dependencies: [libc_rs, qemu_macros],
)
common_rs = declare_dependency(link_with: [_common_rs])
// SPDX-License-Identifier: GPL-2.0-or-later
+pub use qemu_macros::{TryInto, Wrapper};
+
pub mod assertions;
pub mod bitops;
/// Annotates [`Self`] as a transparent wrapper for another type.
///
-/// Usually defined via the [`qemu_macros::Wrapper`] derive macro.
+/// Usually defined via the [`crate::Wrapper`] derive macro.
///
/// # Examples
///
/// ```
///
/// They are not defined here to allow them to be `const`.
-///
-/// [`qemu_macros::Wrapper`]: ../../qemu_macros/derive.Wrapper.html
pub unsafe trait Wrapper {
type Wrapped;
}
chardev = { path = "../../../chardev" }
system = { path = "../../../system" }
hwcore = { path = "../../../hw/core" }
-qemu_macros = { path = "../../../qemu-macros" }
[lints]
workspace = true
util_rs,
migration_rs,
bql_rs,
- qemu_macros,
qom_rs,
chardev_rs,
system_rs,
}
#[repr(C)]
-#[derive(qemu_macros::Object, qemu_macros::Device)]
+#[derive(qom::Object, hwcore::Device)]
/// PL011 Device Model in QEMU
pub struct PL011State {
pub parent_obj: ParentField<SysBusDevice>,
}
#[repr(C)]
-#[derive(qemu_macros::Object, qemu_macros::Device)]
+#[derive(qom::Object, hwcore::Device)]
/// PL011 Luminary device model.
pub struct PL011Luminary {
parent_obj: ParentField<PL011State>,
#[doc(alias = "offset")]
#[allow(non_camel_case_types)]
#[repr(u64)]
-#[derive(Debug, Eq, PartialEq, qemu_macros::TryInto)]
+#[derive(Debug, Eq, PartialEq, common::TryInto)]
pub enum RegisterOffset {
/// Data Register
///
rust-version.workspace = true
[dependencies]
+qemu_macros = { path = "../../qemu-macros" }
common = { path = "../../common" }
bql = { path = "../../bql" }
qom = { path = "../../qom" }
migration = { path = "../../migration" }
system = { path = "../../system" }
util = { path = "../../util" }
-qemu_macros = { path = "../../qemu-macros" }
[lints]
workspace = true
override_options: ['rust_std=2021', 'build.rust_std=2021'],
rust_args: ['--test'],
install: false,
- dependencies: [common_rs, hwcore_rs, bql_rs, migration_rs, qemu_macros, util_rs]),
+ dependencies: [common_rs, hwcore_rs, bql_rs, migration_rs, util_rs]),
args: [
'--test', '--test-threads', '1',
'--format', 'pretty',
/// An opaque wrapper around [`bindings::IRQState`].
#[repr(transparent)]
-#[derive(Debug, qemu_macros::Wrapper)]
+#[derive(Debug, common::Wrapper)]
pub struct IRQState(Opaque<bindings::IRQState>);
/// Interrupt sources are used by devices to pass changes to a value (typically
// SPDX-License-Identifier: GPL-2.0-or-later
+pub use qemu_macros::Device;
pub use qom;
pub mod bindings;
/// A safe wrapper around [`bindings::Clock`].
#[repr(transparent)]
-#[derive(Debug, qemu_macros::Wrapper)]
+#[derive(Debug, common::Wrapper)]
pub struct Clock(Opaque<bindings::Clock>);
unsafe impl Send for Clock {}
/// A safe wrapper around [`bindings::DeviceState`].
#[repr(transparent)]
-#[derive(Debug, qemu_macros::Wrapper)]
+#[derive(Debug, common::Wrapper)]
pub struct DeviceState(Opaque<bindings::DeviceState>);
unsafe impl Send for DeviceState {}
/// A safe wrapper around [`bindings::SysBusDevice`].
#[repr(transparent)]
-#[derive(Debug, qemu_macros::Wrapper)]
+#[derive(Debug, common::Wrapper)]
pub struct SysBusDevice(Opaque<bindings::SysBusDevice>);
unsafe impl Send for SysBusDevice {}
.build();
#[repr(C)]
-#[derive(qemu_macros::Object, qemu_macros::Device)]
+#[derive(qom::Object, hwcore::Device)]
pub struct DummyState {
parent: ParentField<DeviceState>,
#[property(rename = "migrate-clk", default = true)]
}
#[repr(C)]
-#[derive(qemu_macros::Object, qemu_macros::Device)]
+#[derive(qom::Object, hwcore::Device)]
pub struct DummyChildState {
parent: ParentField<DummyState>,
}
bql = { path = "../../../bql" }
qom = { path = "../../../qom" }
system = { path = "../../../system" }
-qemu_macros = { path = "../../../qemu-macros" }
hwcore = { path = "../../../hw/core" }
[lints]
util_rs,
migration_rs,
bql_rs,
- qemu_macros,
qom_rs,
system_rs,
hwcore_rs,
/// Timer N Interrupt Routing Capability (bits 32:63)
const HPET_TN_CFG_INT_ROUTE_CAP_SHIFT: usize = 32;
-#[derive(qemu_macros::TryInto)]
+#[derive(common::TryInto)]
#[repr(u64)]
#[allow(non_camel_case_types)]
/// Timer registers, masked by 0x18
ROUTE = 16,
}
-#[derive(qemu_macros::TryInto)]
+#[derive(common::TryInto)]
#[repr(u64)]
#[allow(non_camel_case_types)]
/// Global registers
/// HPET Event Timer Block Abstraction
#[repr(C)]
-#[derive(qemu_macros::Object)]
+#[derive(qom::Object)]
pub struct HPETState {
parent_obj: ParentField<SysBusDevice>,
iomem: MemoryRegion,
genrs = []
-subdir('common')
subdir('qemu-macros')
+
+subdir('common')
subdir('bits')
subdir('util')
subdir('migration')
[dependencies]
common = { path = "../common" }
util = { path = "../util" }
-qemu_macros = { path = "../qemu-macros" }
[lints]
workspace = true
// SPDX-License-Identifier: GPL-2.0-or-later
+pub use qemu_macros::Object;
+
pub mod bindings;
// preserve one-item-per-"use" syntax, it is clearer
/// A safe wrapper around [`bindings::Object`].
#[repr(transparent)]
-#[derive(Debug, qemu_macros::Wrapper)]
+#[derive(Debug, common::Wrapper)]
pub struct Object(Opaque<bindings::Object>);
unsafe impl Send for Object {}
///
/// ```ignore
/// #[repr(C)]
-/// #[derive(qemu_macros::Object)]
+/// #[derive(qom::Object)]
/// pub struct MyDevice {
/// parent: ParentField<DeviceState>,
/// ...
common = { path = "../common" }
qom = { path = "../qom" }
util = { path = "../util" }
-qemu_macros = { path = "../qemu-macros" }
[lints]
workspace = true
)
system_rs = declare_dependency(link_with: [_system_rs],
- dependencies: [qemu_macros, hwcore])
+ dependencies: [hwcore])
/// A safe wrapper around [`bindings::MemoryRegion`].
#[repr(transparent)]
-#[derive(qemu_macros::Wrapper)]
+#[derive(common::Wrapper)]
pub struct MemoryRegion(Opaque<bindings::MemoryRegion>);
unsafe impl Send for MemoryRegion {}
migration = { path = "../migration" }
util = { path = "../util" }
bql = { path = "../bql" }
-qemu_macros = { path = "../qemu-macros" }
qom = { path = "../qom" }
system = { path = "../system" }
foreign = { workspace = true }
libc = { workspace = true }
common = { path = "../common" }
-qemu_macros = { path = "../qemu-macros" }
[lints]
workspace = true
),
override_options: ['rust_std=2021', 'build.rust_std=2021'],
rust_abi: 'rust',
- dependencies: [anyhow_rs, libc_rs, foreign_rs, common_rs, qemu_macros, qom, qemuutil],
+ dependencies: [anyhow_rs, libc_rs, foreign_rs, common_rs, qom, qemuutil],
)
util_rs = declare_dependency(link_with: [_util_rs], dependencies: [qemuutil, qom])
/// A safe wrapper around [`bindings::QEMUTimer`].
#[repr(transparent)]
-#[derive(Debug, qemu_macros::Wrapper)]
+#[derive(Debug, common::Wrapper)]
pub struct Timer(Opaque<bindings::QEMUTimer>);
unsafe impl Send for Timer {}
unsafe impl Sync for Timer {}
#[repr(transparent)]
-#[derive(qemu_macros::Wrapper)]
+#[derive(common::Wrapper)]
pub struct TimerListGroup(Opaque<bindings::QEMUTimerListGroup>);
unsafe impl Send for TimerListGroup {}