On Mon, Dec 02, 2024 at 12:06:09PM +0100, Paolo Bonzini wrote: > Date: Mon, 2 Dec 2024 12:06:09 +0100 > From: Paolo Bonzini <pbonz...@redhat.com> > Subject: [PATCH v2 2/2] rust: add bindings for interrupt sources > X-Mailer: git-send-email 2.47.0 > > The InterruptSource bindings let us call qemu_set_irq() and sysbus_init_irq() > as safe code. > > Interrupt sources, qemu_irq in C code, are pointers to IRQState objects. > They are QOM link properties and can be written to outside the control > of the device (i.e. from a shared reference); therefore they must be > interior-mutable in Rust. Since thread-safety is provided by the BQL, > what we want here is the newly-introduced BqlCell. A pointer to the > contents of the BqlCell (an IRQState**, or equivalently qemu_irq*) > is then passed to the C sysbus_init_irq function. > > Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> > --- > rust/hw/char/pl011/src/device.rs | 22 ++++---- > rust/qemu-api/meson.build | 2 + > rust/qemu-api/src/irq.rs | 91 ++++++++++++++++++++++++++++++++ > rust/qemu-api/src/lib.rs | 2 + > rust/qemu-api/src/sysbus.rs | 26 +++++++++ > 5 files changed, 133 insertions(+), 10 deletions(-) > create mode 100644 rust/qemu-api/src/irq.rs > create mode 100644 rust/qemu-api/src/sysbus.rs >
Reviewed-by: Zhao Liu <zhao1....@intel.com>