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

From: Ivan Kokshaysky
Date: Thu Apr 09 2009 - 05:47:38 EST


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.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/