Re: [GIT RFC] percpu: use dynamic percpu allocator as the default percpu allocator

Ivan Kokshaysky
2009-04-09T09:47:38Z

On Wed, Apr 08, 2009 at 01:18:23PM -0700, Tejun Heo wrote:
> > #define DEFINE_PER_CPU_SECTION(type, name, section) \
> > __attribute__((__section__(".garbage"), __unused__)) \
> > char __dummy__##name; \
> > __attribute__((__section__(PER_CPU_BASE_SECTION section))) \
> > __weak __typeof__(type) per_cpu__##name
>
> Nice. I think .discard would suit better for the dummy variable tho
> (x86 discards the section and it seems to be more common name with
> ldscript using /DISCARD/ identifier for things to throw away). Also,

Indeed, .discard sounds better.

> it seems like if two different files happen to use static percpu
> variables with the same name, they would end up sharing it, right?
> That looks a tad bit dangerous.

True. One of possible solutions is to add another dummy variable,
like this:

#define DEFINE_PER_CPU_SECTION(type, name, section) \
__attribute__((__section__(".discard"), __unused__)) \
char __dummy__##name; \
+ __attribute__((__section__(".discard"))) \
+ char __per_cpu_multiple_def__##name; \
__attribute__((__section__(PER_CPU_BASE_SECTION section))) \
__weak __typeof__(type) per_cpu__##name

so in that situation we'll get a link failure.

Ivan.