Commit 95cb0cb5 authored by Lyude Paul's avatar Lyude Paul Committed by Greg Kroah-Hartman
Browse files

rust/faux: Add missing parent argument to Registration::new()



A little late in the review of the faux device interface, we added the
ability to specify a parent device when creating new faux devices - but
this never got ported over to the rust bindings. So, let's add the missing
argument now so we don't have to convert other users later down the line.

Signed-off-by: default avatarLyude Paul <lyude@redhat.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Link: https://lore.kernel.org/r/20250227193522.198344-1-lyude@redhat.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 6853d9d1
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -23,11 +23,20 @@

impl Registration {
    /// Create and register a new faux device with the given name.
    pub fn new(name: &CStr) -> Result<Self> {
    pub fn new(name: &CStr, parent: Option<&device::Device>) -> Result<Self> {
        // SAFETY:
        // - `name` is copied by this function into its own storage
        // - `faux_ops` is safe to leave NULL according to the C API
        let dev = unsafe { bindings::faux_device_create(name.as_char_ptr(), null_mut(), null()) };
        // - `parent` can be either NULL or a pointer to a `struct device`, and `faux_device_create`
        //   will take a reference to `parent` using `device_add` - ensuring that it remains valid
        //   for the lifetime of the faux device.
        let dev = unsafe {
            bindings::faux_device_create(
                name.as_char_ptr(),
                parent.map_or(null_mut(), |p| p.as_raw()),
                null(),
            )
        };

        // The above function will return either a valid device, or NULL on failure
        // INVARIANT: The device will remain registered until faux_device_destroy() is called, which
+1 −1
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@ impl Module for SampleModule {
    fn init(_module: &'static ThisModule) -> Result<Self> {
        pr_info!("Initialising Rust Faux Device Sample\n");

        let reg = faux::Registration::new(c_str!("rust-faux-sample-device"))?;
        let reg = faux::Registration::new(c_str!("rust-faux-sample-device"), None)?;

        dev_info!(reg.as_ref(), "Hello from faux device!\n");