On Tue, Jun 24, 2025 at 1:46 PM Benno Lossin <lossin@xxxxxxxxxx> wrote: > > 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`. It sounds like this is getting too complicated and that `pin_init_from_closure` is the simpler way to go. Alice