diff options
| author | Paolo Bonzini <pbonzini@redhat.com> | 2025-01-17 11:21:26 +0100 |
|---|---|---|
| committer | Paolo Bonzini <pbonzini@redhat.com> | 2025-02-13 12:19:33 +0100 |
| commit | 201ef001dd40fdb11c83f3e47604219c374590ec (patch) | |
| tree | 8c636c5744556fa86ee672dc24ae46377a4c3160 /rust/qemu-api/src/module.rs | |
| parent | 66bcc554d27f693f89bf04df24d474463a90a894 (diff) | |
| download | focaccia-qemu-201ef001dd40fdb11c83f3e47604219c374590ec.tar.gz focaccia-qemu-201ef001dd40fdb11c83f3e47604219c374590ec.zip | |
rust: qdev: add clock creation
Add a Rust version of qdev_init_clock_in, which can be used in instance_init. There are a couple differences with the C version: - in Rust the object keeps its own reference to the clock (in addition to the one embedded in the NamedClockList), and the reference is dropped automatically by instance_finalize(); this is encoded in the signature of DeviceClassMethods::init_clock_in, which makes the lifetime of the clock independent of that of the object it holds. This goes unnoticed in the C version and is due to the existence of aliases. - also, anything that happens during instance_init uses the pinned_init framework to operate on a partially initialized object, and is done through class methods (i.e. through DeviceClassMethods rather than DeviceMethods) because the device does not exist yet. Therefore, Rust code *must* create clocks from instance_init, which is stricter than C. Reviewed-by: Zhao Liu <zhao1.liu@intel.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'rust/qemu-api/src/module.rs')
0 files changed, 0 insertions, 0 deletions