All of lore.kernel.org
 help / color / mirror / Atom feed
* initialization of static per-cpu variables
@ 2008-05-21 18:28 Vegard Nossum
  2008-05-22  8:20 ` Rusty Russell
  0 siblings, 1 reply; 8+ messages in thread
From: Vegard Nossum @ 2008-05-21 18:28 UTC (permalink / raw)
  To: Linux Kernel Mailing List; +Cc: Rusty Russel

Hi,

I encountered this comment in kernel/softirq.c:

/* Some compilers disobey section attribute on statics when not
   initialized -- RR */
static DEFINE_PER_CPU(struct tasklet_head, tasklet_vec) = { NULL };
static DEFINE_PER_CPU(struct tasklet_head, tasklet_hi_vec) = { NULL };

So I assume it's the combination of static and whatever section
DFINE_PER_CPU puts the variable in which is the problem.

However, there's a LOT of these "static DEFINE_PER_CPU" without any
initializer in the rest of the code, e.g.:

$ g 'static DEFINE_PER_CPU' kernel/sched.c
static DEFINE_PER_CPU(struct sched_entity, init_sched_entity);
static DEFINE_PER_CPU(struct cfs_rq, init_cfs_rq) ____cacheline_aligned_in_smp;
static DEFINE_PER_CPU(struct sched_rt_entity, init_sched_rt_entity);
static DEFINE_PER_CPU(struct rt_rq, init_rt_rq) ____cacheline_aligned_in_smp;
static DEFINE_PER_CPU_SHARED_ALIGNED(struct rq, runqueues);
static DEFINE_PER_CPU(unsigned long long, time_offset);
static DEFINE_PER_CPU(unsigned long long, prev_cpu_time);
static DEFINE_PER_CPU(spinlock_t, aggregate_lock);
static DEFINE_PER_CPU(struct sched_domain, cpu_domains);
static DEFINE_PER_CPU(struct sched_group, sched_group_cpus);
static DEFINE_PER_CPU(struct sched_domain, core_domains);
static DEFINE_PER_CPU(struct sched_group, sched_group_core);
static DEFINE_PER_CPU(struct sched_domain, phys_domains);
static DEFINE_PER_CPU(struct sched_group, sched_group_phys);
static DEFINE_PER_CPU(struct sched_domain, node_domains);
static DEFINE_PER_CPU(struct sched_domain, allnodes_domains);
static DEFINE_PER_CPU(struct sched_group, sched_group_allnodes);

The comment seems to be ancient and I don't know who wrote it, so I'm
making a guess that it's Rusty Russel (Cced).

So which do we do, delete the comment (on the grounds that it is
invalid) or fix these other declarations (there's a lot of them)?

Vegard

-- 
"The animistic metaphor of the bug that maliciously sneaked in while
the programmer was not looking is intellectually dishonest as it
disguises that the error is the programmer's own creation."
	-- E. W. Dijkstra, EWD1036

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2008-06-02 23:11 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-05-21 18:28 initialization of static per-cpu variables Vegard Nossum
2008-05-22  8:20 ` Rusty Russell
2008-05-22 16:12   ` David Miller
2008-05-23 14:29   ` Adrian Bunk
2008-05-23 14:43     ` Vegard Nossum
2008-05-25 10:35     ` Rusty Russell
2008-06-02  7:59       ` Adrian Bunk
2008-06-02 23:11         ` Rusty Russell

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.