On Thu, Dec 14, 2023 at 05:03:03PM +0200, Andy Shevchenko wrote: > On Thu, Dec 14, 2023 at 05:58:11PM +0800, Kent Gibson wrote: ... > > +/* > > + * Used to populate gpio_v2_line_info with cdev specific fields not contained > > + * in the struct gpio_desc. > > + * A line is determined to contain supplemental information by > > + * line_is_supplemental(). > > + */ > > +static struct { > > + /* a rbtree of the struct lines containing the supplemental info */ > > + struct rb_root tree; > > + /* covers tree */ > > + spinlock_t lock; > > +} supinfo; Hmm... If I read the kernel-doc script it should support anonymous structs and unions... ... > > +static void supinfo_init(void) > > +{ > > + supinfo.tree = RB_ROOT; > > + spin_lock_init(&supinfo.lock); > > +} > > Can it be done statically? > > supinfo = { > .tree = RB_ROOT, > .lock = __SPIN_LOCK_UNLOCKED(supinfo.lock), I even checked the current tree, we have 32 users of this pattern in drivers/. > }; -- With Best Regards, Andy Shevchenko