On Sat, Jul 19, 2025 at 08:52:41AM +0200, Greg Kroah-Hartman wrote: > On Fri, Jul 18, 2025 at 03:49:37PM +0200, Thierry Reding wrote: > > On Thu, Jul 17, 2025 at 02:11:41PM +0200, Greg Kroah-Hartman wrote: > > > On Thu, Jul 17, 2025 at 12:32:34PM +0200, Thierry Reding wrote: [...] > > struct syscore; > > > > struct syscore_ops { > > int (*suspend)(struct syscore *syscore); > > void (*resume)(struct syscore *syscore); > > void (*shutdown)(struct syscore *syscore); > > }; > > > > struct syscore { > > const struct syscore_ops *ops; > > struct list_head node; > > }; > > > > Is that what you had in mind? > > I missed the list_head, so yes, this would be better, but don't pass > back the syscore structure, how about just a void * instead, making the > whole container_of() stuff go away?
Yeah, that's a possibility. I personally don't like passing the void * around because it's easier to make mistakes that way. I also find it unintuitive because it doesn't immediately show you what the functions expect. My understanding is that the container_of() should get optimized away most of the time, so there aren't any obvious downsides that I can see. But I don't feel very strongly, so if you have a strong preference for void pointers, I can do that. Thierry
signature.asc
Description: PGP signature