In kernel/cpu.c, there exists API that is declared as __cpuinit, and
at the same time exported via EXPORT_SYMBOL().
Can these two attribute coexists at the same time? I mean, when it
is declared with EXPORT_SYMBOL, according to include/linux/module.h,
it is placed in a __ksymtab section, and when compiled with with
__cpuinit, according to include/linux/init.h, into a __cpuinit
section.
Can gcc compiled ELF support this feature?
Anyway, logical speaking, if it is EXPORT_SYMBOL, it is meant to be
long-lasting, and not short-live as __cpuinit is meant to be, right?
Please comment, thanks.
If ok, I will modify the cpu.c to remove all the __cpuinit whenever
EXPORT_SYMBOL is encountered for it (or any __init in general :-)).
On Mon, Feb 04, 2008 at 09:49:24AM +0800, Peter Teoh wrote:
> In kernel/cpu.c, there exists API that is declared as __cpuinit, and
> at the same time exported via EXPORT_SYMBOL().
>
> Can these two attribute coexists at the same time? I mean, when it
> is declared with EXPORT_SYMBOL, according to include/linux/module.h,
> it is placed in a __ksymtab section, and when compiled with with
> __cpuinit, according to include/linux/init.h, into a __cpuinit
> section.
kbuild.git contains a commit so we no longer warn about
symbols being exported if annotatated with __cpuinit, __devinit, and
__devinit.
I've requested Linus to pull the changes and expet it to happen
within the next two days.
Sam
On Mon, 4 Feb 2008 06:13:18 +0100 Sam Ravnborg wrote:
> On Mon, Feb 04, 2008 at 09:49:24AM +0800, Peter Teoh wrote:
> > In kernel/cpu.c, there exists API that is declared as __cpuinit, and
> > at the same time exported via EXPORT_SYMBOL().
> >
> > Can these two attribute coexists at the same time? I mean, when it
> > is declared with EXPORT_SYMBOL, according to include/linux/module.h,
> > it is placed in a __ksymtab section, and when compiled with with
> > __cpuinit, according to include/linux/init.h, into a __cpuinit
> > section.
>
> kbuild.git contains a commit so we no longer warn about
> symbols being exported if annotatated with __cpuinit, __devinit, and
> __devinit.
but why? Is this just to reduce the volume of output, even though
exported __init symbols are a problem waiting to happen?
> I've requested Linus to pull the changes and expet it to happen
> within the next two days.
---
~Randy