Re: [PATCH 00/11] Add support for RaspberryPi RP1 PCI device using a DT overlay

Andrea della Porta
2024-08-30T05:22:12Z

Hi Andrew,

On 15:04 Thu 29 Aug , Andrew Lunn wrote:
> > > > WARNING: externs should be avoided in .c files
> > > > #331: FILE: drivers/misc/rp1/rp1-pci.c:58:
> > > > +extern char __dtbo_rp1_pci_begin[];
> > > >
> > > > True, but in this case we don't have a symbol that should be exported to other
> > > > translation units, it just needs to be referenced inside the driver and
> > > > consumed locally. Hence it would be better to place the extern in .c file.
> > >
> > > Did you try making it static.
> >
> > The dtso is compiled into an obj and linked with the driver which is in
> > a different transaltion unit. I'm not aware on other ways to include that
> > symbol without declaring it extern (the exception being some hackery
> > trick that compile the dtso into a .c file to be included into the driver
> > main source file).
> > Or probably I'm not seeing what you are proposing, could you please elaborate
> > on that?
>
> Sorry, i jumped to the wrong conclusion. Often it is missing static
> keyword which causes warnings. However, you say it needs to be global
> scope.
>
> Reading the warning again:
>
> > > > WARNING: externs should be avoided in .c files
>
> It is wanting you to put it in a .h file, which then gets
> included by the two users.

On a second thought, are you really sure we want to proceed with the header file?
After all the only line in it would be the extern declaration and the only one to
include it would be rp1-dev.c. Moreover, an header file would convey the false
premise that you can include it and use that symbol while in fact it should be
only used inside the driver.
OTOH, not creating that header file will continue to trigger the warning...

Many thanks,
Andrea

>
> Andrew