[PATCH v2 02/37] linker_lists: Allow use in data structures
Simon Glass
sjg at chromium.org
Sun Feb 7 15:37:23 CET 2021
Hi Heinrich,
On Thu, 4 Feb 2021 at 06:54, Heinrich Schuchardt <xypron.glpk at gmx.de> wrote:
>
> On 03.02.21 17:43, Simon Glass wrote:
> > At present linker lists are designed for use in code. They make use of
> > statements within expressions ({...}), for example.
> >
> > It is possible to generate a reference to a linker_list entry that can
> > be used in data structures, where such features are not permitted. It
> > requires that the reference first be declared as extern. In other
> > words the existing macro needs to be split into two parts.
> >
> > Add new macros to support this.
> >
> > Signed-off-by: Simon Glass <sjg at chromium.org>
> > ---
> >
> > (no changes since v1)
> >
> > include/linker_lists.h | 28 ++++++++++++++++++++++++++++
> > 1 file changed, 28 insertions(+)
> >
> > diff --git a/include/linker_lists.h b/include/linker_lists.h
> > index fd98ecd297c..55631f0240c 100644
> > --- a/include/linker_lists.h
> > +++ b/include/linker_lists.h
> > @@ -211,6 +211,34 @@
> > _ll_result; \
> > })
> >
> > +/**
> > + * ll_entry_decl() - Declare a linker-generated array entry reference as extern
> > + *
> > + * This declares a reference to a list entry so that it can be used later,
> > + * without needing the code in ll_entry_get().
> > + *
> > + * To use this, put ll_entry_decl() somewhere in your file, then use
> > + * ll_entry_ref() later on, to reference the entry.
> > + *
> > + * @_type: Data type of the entry
> > + * @_name: Name of the entry
> > + * @_list: Name of the list in which this entry is placed
> > + */
> > +#define ll_entry_decl(_type, _name, _list) \
> > + extern _type _u_boot_list_2_##_list##_2_##_name
>
> Can't you simply add the extern keyword to ll_entry_declare()?
>
> Why do we need entries with and entries without extern?
My original reason was because I wanted to prevent the non-extern
versions from being used in code not generated by dtoc, since this of
course breaks the whole thing.
But so far I have not enforced this, so I am OK with doing what you
suggest. It is easy enough to change later if it causes problems.
Regards,
Simon
More information about the U-Boot
mailing list