From: chenmiao <[email protected]> In qdev.rs, we implemented the init_gpio_out_named function, which corresponds to the C function qdev_init_gpio_out_named. We also refactored the init_gpio_out function to reuse the init_gpio_out_named interface.
Signed-off-by: Chen Miao <[email protected]> --- rust/hw/core/src/qdev.rs | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/rust/hw/core/src/qdev.rs b/rust/hw/core/src/qdev.rs index c3097a284d..28da94dd0a 100644 --- a/rust/hw/core/src/qdev.rs +++ b/rust/hw/core/src/qdev.rs @@ -17,7 +17,7 @@ pub use crate::bindings::{ClockEvent, DeviceClass, Property, ResetType}; use crate::{ - bindings::{self, qdev_init_gpio_in, qdev_init_gpio_out, ResettableClass}, + bindings::{self, qdev_init_gpio_in, qdev_init_gpio_out_named, ResettableClass}, irq::InterruptSource, }; @@ -399,11 +399,22 @@ fn do_init_gpio_in( } fn init_gpio_out(&self, pins: &[InterruptSource]) { + self.init_gpio_out_named(pins, "unnamed-gpio-out", pins.len()); + } + + fn init_gpio_out_named(&self, pins: &[InterruptSource], name: &str, n: usize) { + let c_name = if name.is_empty() { + CString::new("unnamed-gpio-out").unwrap() + } else { + CString::new(name).unwrap() + }; + unsafe { - qdev_init_gpio_out( + qdev_init_gpio_out_named( self.upcast().as_mut_ptr(), InterruptSource::slice_as_ptr(pins), - pins.len() as c_int, + c_name.as_ptr(), + n as c_int, ); } } -- 2.43.0
