On Tue Jun 24, 2025 at 2:31 PM CEST, Daniel Almeida wrote: > On 23 Jun 2025, at 16:28, Benno Lossin <lossin@xxxxxxxxxx> wrote: >> On Mon Jun 23, 2025 at 9:18 PM CEST, Boqun Feng wrote: >>> try_pin_init!(&this in Self { >>> handler, >>> inner: Devres::new( >>> dev, >>> RegistrationInner { >>> // Needs to use `handler` address as cookie, same for >>> // request_irq(). >>> cookie: &raw (*(this.as_ptr().cast()).handler), >>> irq: { >>> to_result(unsafe { bindings::request_irq(...) })?; >>> irq >>> } >>> }, >>> GFP_KERNEL, >>> )?, >>> _pin: PhantomPinned >>> }) >> >> Well yes and no, with the Devres changes, the `cookie` can just be the >> address of the `RegistrationInner` & we can do it this way :) >> >> --- >> Cheers, >> Benno > > > No, we need this to be the address of the the whole thing (i.e. > Registration<T>), otherwise you can’t access the handler in the irq > callback. Gotcha, so you keep the cookie field, but you should still be able to use `try_pin_init` & the devres improvements to avoid the use of `pin_init_from_closure`. --- Cheers, Benno