Re: [PATCH v2 1/2] rust: introduce abstractions for fwctlg
From: Jason Gunthorpe
Date: Wed Jan 28 2026 - 11:08:19 EST
On Wed, Jan 28, 2026 at 04:49:07PM +0100, Danilo Krummrich wrote:
> // Initialize the `data` initializer within the memory pointed
> // to by `raw_data`.
> unsafe { data.__pinned_init(raw_data) }.inspect_err(|_| {
> So, essentially the driver passes an initializer of its private data and we
> "write" this initializer into the extra memory allocated with
> _fwctl_alloc_device().
This all seems like the right way to do it!
My only remark it that it still doesn't give an opportunity to call a
function between init and register.
__pinned_init() is taking the T type without access to the initialized
fwctl_device
So if I add some function drivers need to call between init and register:
fwctl_XYZ(fwctl, ..)
It is not possible?
Or would you some container_of in rust within pinned_init()?
Or is it needed to add the typestate?
Jason